ghcide-2.7.0.0: The core of an IDE

Safe Haskell | None
Language | GHC2021

Development.IDE.GHC.Compat.Core

Contents

- Session
- Linear Haskell
- Interface Files
- Fixity
- ModSummary
- HomeModInfo
- ModGuts
- ModDetails
- HsExpr,
- Var
- Specs
- SourceText
- Ways
- AvailInfo
- TcGblEnv
- Parsing and LExer types
- Compilation Main
- Typecheck utils
- Source Locations
- Finder
- Module and Package
- Linker
- Hooks
- HPT
- Driver-Make
- GHCi
- ModLocation
- DataCon
- Role
- Panic
- Other
- Util Module re-exports
- Syntax re-exports

Description

Compat Core module that handles the GHC module hierarchy re-organization by re-exporting everything we care about.

This module provides no other compat mechanisms, except for simple backward-compatible pattern synonyms.

Synopsis

- data DynFlags
- extensions :: DynFlags -> [OnOff Extension]
- extensionFlags :: DynFlags -> EnumSet Extension
- targetPlatform :: DynFlags -> Platform
- packageFlags :: DynFlags -> [PackageFlag]
- generalFlags :: DynFlags -> EnumSet GeneralFlag
- warningFlags :: DynFlags -> EnumSet WarningFlag
- topDir :: DynFlags -> FilePath
- hiDir :: DynFlags -> Maybe String
- tmpDir :: DynFlags -> TempDir
- importPaths :: DynFlags -> [FilePath]
- useColor :: DynFlags -> OverridingBool
- canUseColor :: DynFlags -> Bool
- useUnicode :: DynFlags -> Bool
- objectDir :: DynFlags -> Maybe String
- flagsForCompletion :: Bool -> [String]
- setImportPaths :: [FilePath] -> DynFlags -> DynFlags
- outputFile :: DynFlags -> Maybe String
- pluginModNames :: DynFlags -> [ModuleName]
- refLevelHoleFits :: DynFlags -> Maybe Int
- maxRefHoleFits :: DynFlags -> Maybe Int
- maxValidHoleFits :: DynFlags -> Maybe Int
- setOutputFile :: Maybe String -> DynFlags -> DynFlags
- lookupType :: HscEnv -> Name -> IO (Maybe TyThing)
- needWiredInHomeIface :: TyThing -> Bool
- loadWiredInHomeIface :: Name -> IfM lcl ()
- readIface :: DynFlags -> NameCache -> Module -> FilePath -> IO (MaybeErr ReadInterfaceError ModIface)
- loadSysInterface :: SDoc -> Module -> IfM lcl ModIface
- importDecl :: Name -> IfM lcl (MaybeErr IfaceMessage TyThing)
- type CommandLineOption = String
- sPgm_F :: Settings -> String
- settings :: DynFlags -> Settings
- gopt :: GeneralFlag -> DynFlags -> Bool
- gopt_set :: DynFlags -> GeneralFlag -> DynFlags
- gopt_unset :: DynFlags -> GeneralFlag -> DynFlags
- wopt :: WarningFlag -> DynFlags -> Bool
- wopt_set :: DynFlags -> WarningFlag -> DynFlags
- xFlags :: [FlagSpec Extension]
- xopt :: Extension -> DynFlags -> Bool
- xopt_unset :: DynFlags -> Extension -> DynFlags
- xopt_set :: DynFlags -> Extension -> DynFlags
- data FlagSpec flag = FlagSpec {
  - flagSpecName :: String
  - flagSpecFlag :: flag
  - flagSpecAction :: TurnOnFlag -> DynP ()
  - flagSpecGhcMode :: GhcFlagMode
  }
- data WarningFlag
  - = Opt_WarnDuplicateExports
  - | Opt_WarnDuplicateConstraints
  - | Opt_WarnRedundantConstraints
  - | Opt_WarnHiShadows
  - | Opt_WarnImplicitPrelude
  - | Opt_WarnIncompletePatterns
  - | Opt_WarnIncompleteUniPatterns
  - | Opt_WarnIncompletePatternsRecUpd
  - | Opt_WarnOverflowedLiterals
  - | Opt_WarnEmptyEnumerations
  - | Opt_WarnMissingFields
  - | Opt_WarnMissingImportList
  - | Opt_WarnMissingMethods
  - | Opt_WarnMissingSignatures
  - | Opt_WarnMissingLocalSignatures
  - | Opt_WarnNameShadowing
  - | Opt_WarnOverlappingPatterns
  - | Opt_WarnTypeDefaults
  - | Opt_WarnMonomorphism
  - | Opt_WarnUnusedTopBinds
  - | Opt_WarnUnusedLocalBinds
  - | Opt_WarnUnusedPatternBinds
  - | Opt_WarnUnusedImports
  - | Opt_WarnUnusedMatches
  - | Opt_WarnUnusedTypePatterns
  - | Opt_WarnUnusedForalls
  - | Opt_WarnUnusedRecordWildcards
  - | Opt_WarnRedundantBangPatterns
  - | Opt_WarnRedundantRecordWildcards
  - | Opt_WarnDeprecatedFlags
  - | Opt_WarnMissingMonadFailInstances
  - | Opt_WarnSemigroup
  - | Opt_WarnDodgyExports
  - | Opt_WarnDodgyImports
  - | Opt_WarnOrphans
  - | Opt_WarnAutoOrphans
  - | Opt_WarnIdentities
  - | Opt_WarnTabs
  - | Opt_WarnUnrecognisedPragmas
  - | Opt_WarnMisplacedPragmas
  - | Opt_WarnDodgyForeignImports
  - | Opt_WarnUnusedDoBind
  - | Opt_WarnWrongDoBind
  - | Opt_WarnAlternativeLayoutRuleTransitional
  - | Opt_WarnUnsafe
  - | Opt_WarnSafe
  - | Opt_WarnTrustworthySafe
  - | Opt_WarnMissedSpecs
  - | Opt_WarnAllMissedSpecs
  - | Opt_WarnUnsupportedCallingConventions
  - | Opt_WarnUnsupportedLlvmVersion
  - | Opt_WarnMissedExtraSharedLib
  - | Opt_WarnInlineRuleShadowing
  - | Opt_WarnTypedHoles
  - | Opt_WarnPartialTypeSignatures
  - | Opt_WarnMissingExportedSignatures
  - | Opt_WarnUntickedPromotedConstructors
  - | Opt_WarnDerivingTypeable
  - | Opt_WarnDeferredTypeErrors
  - | Opt_WarnDeferredOutOfScopeVariables
  - | Opt_WarnNonCanonicalMonadInstances
  - | Opt_WarnNonCanonicalMonadFailInstances
  - | Opt_WarnNonCanonicalMonoidInstances
  - | Opt_WarnMissingPatternSynonymSignatures
  - | Opt_WarnUnrecognisedWarningFlags
  - | Opt_WarnSimplifiableClassConstraints
  - | Opt_WarnCPPUndef
  - | Opt_WarnUnbangedStrictPatterns
  - | Opt_WarnMissingHomeModules
  - | Opt_WarnPartialFields
  - | Opt_WarnMissingExportList
  - | Opt_WarnInaccessibleCode
  - | Opt_WarnStarIsType
  - | Opt_WarnStarBinder
  - | Opt_WarnImplicitKindVars
  - | Opt_WarnSpaceAfterBang
  - | Opt_WarnMissingDerivingStrategies
  - | Opt_WarnPrepositiveQualifiedModule
  - | Opt_WarnUnusedPackages
  - | Opt_WarnInferredSafeImports
  - | Opt_WarnMissingSafeHaskellMode
  - | Opt_WarnCompatUnqualifiedImports
  - | Opt_WarnDerivingDefaults
  - | Opt_WarnInvalidHaddock
  - | Opt_WarnOperatorWhitespaceExtConflict
  - | Opt_WarnOperatorWhitespace
  - | Opt_WarnAmbiguousFields
  - | Opt_WarnImplicitLift
  - | Opt_WarnMissingKindSignatures
  - | Opt_WarnMissingPolyKindSignatures
  - | Opt_WarnMissingExportedPatternSynonymSignatures
  - | Opt_WarnRedundantStrictnessFlags
  - | Opt_WarnForallIdentifier
  - | Opt_WarnUnicodeBidirectionalFormatCharacters
  - | Opt_WarnGADTMonoLocalBinds
  - | Opt_WarnTypeEqualityOutOfScope
  - | Opt_WarnTypeEqualityRequiresOperators
  - | Opt_WarnLoopySuperclassSolve
  - | Opt_WarnTermVariableCapture
  - | Opt_WarnMissingRoleAnnotations
  - | Opt_WarnImplicitRhsQuantification
  - | Opt_WarnIncompleteExportWarnings
  - | Opt_WarnInconsistentFlags
- data GeneralFlag
  - = Opt_DumpToFile
  - | Opt_DumpWithWays
  - | Opt_D_dump_minimal_imports
  - | Opt_DoCoreLinting
  - | Opt_DoLinearCoreLinting
  - | Opt_DoStgLinting
  - | Opt_DoCmmLinting
  - | Opt_DoAsmLinting
  - | Opt_DoAnnotationLinting
  - | Opt_DoBoundsChecking
  - | Opt_NoLlvmMangler
  - | Opt_FastLlvm
  - | Opt_NoTypeableBinds
  - | Opt_DistinctConstructorTables
  - | Opt_InfoTableMap
  - | Opt_InfoTableMapWithFallback
  - | Opt_InfoTableMapWithStack
  - | Opt_WarnIsError
  - | Opt_ShowWarnGroups
  - | Opt_HideSourcePaths
  - | Opt_PrintExplicitForalls
  - | Opt_PrintExplicitKinds
  - | Opt_PrintExplicitCoercions
  - | Opt_PrintExplicitRuntimeReps
  - | Opt_PrintEqualityRelations
  - | Opt_PrintAxiomIncomps
  - | Opt_PrintUnicodeSyntax
  - | Opt_PrintExpandedSynonyms
  - | Opt_PrintPotentialInstances
  - | Opt_PrintRedundantPromotionTicks
  - | Opt_PrintTypecheckerElaboration
  - | Opt_CallArity
  - | Opt_Exitification
  - | Opt_Strictness
  - | Opt_LateDmdAnal
  - | Opt_KillAbsence
  - | Opt_KillOneShot
  - | Opt_FullLaziness
  - | Opt_FloatIn
  - | Opt_LocalFloatOut
  - | Opt_LocalFloatOutTopLevel
  - | Opt_LateSpecialise
  - | Opt_Specialise
  - | Opt_SpecialiseAggressively
  - | Opt_CrossModuleSpecialise
  - | Opt_PolymorphicSpecialisation
  - | Opt_InlineGenerics
  - | Opt_InlineGenericsAggressively
  - | Opt_StaticArgumentTransformation
  - | Opt_CSE
  - | Opt_StgCSE
  - | Opt_StgLiftLams
  - | Opt_LiberateCase
  - | Opt_SpecConstr
  - | Opt_SpecConstrKeen
  - | Opt_SpecialiseIncoherents
  - | Opt_DoLambdaEtaExpansion
  - | Opt_IgnoreAsserts
  - | Opt_DoEtaReduction
  - | Opt_CaseMerge
  - | Opt_CaseFolding
  - | Opt_UnboxStrictFields
  - | Opt_UnboxSmallStrictFields
  - | Opt_DictsCheap
  - | Opt_EnableRewriteRules
  - | Opt_EnableThSpliceWarnings
  - | Opt_RegsGraph
  - | Opt_RegsIterative
  - | Opt_PedanticBottoms
  - | Opt_LlvmTBAA
  - | Opt_LlvmFillUndefWithGarbage
  - | Opt_IrrefutableTuples
  - | Opt_CmmSink
  - | Opt_CmmStaticPred
  - | Opt_CmmElimCommonBlocks
  - | Opt_CmmControlFlow
  - | Opt_AsmShortcutting
  - | Opt_OmitYields
  - | Opt_FunToThunk
  - | Opt_DictsStrict
  - | Opt_DmdTxDictSel
  - | Opt_Loopification
  - | Opt_CfgBlocklayout
  - | Opt_WeightlessBlocklayout
  - | Opt_CprAnal
  - | Opt_WorkerWrapper
  - | Opt_WorkerWrapperUnlift
  - | Opt_SolveConstantDicts
  - | Opt_AlignmentSanitisation
  - | Opt_CatchNonexhaustiveCases
  - | Opt_NumConstantFolding
  - | Opt_CoreConstantFolding
  - | Opt_FastPAPCalls
  - | Opt_DoTagInferenceChecks
  - | Opt_SimplPreInlining
  - | Opt_IgnoreInterfacePragmas
  - | Opt_OmitInterfacePragmas
  - | Opt_ExposeAllUnfoldings
  - | Opt_WriteInterface
  - | Opt_WriteHie
  - | Opt_DisableJsMinifier
  - | Opt_AutoSccsOnIndividualCafs
  - | Opt_ProfCountEntries
  - | Opt_ProfLateInlineCcs
  - | Opt_ProfLateCcs
  - | Opt_ProfManualCcs
  - | Opt_Pp
  - | Opt_ForceRecomp
  - | Opt_IgnoreOptimChanges
  - | Opt_IgnoreHpcChanges
  - | Opt_ExcessPrecision
  - | Opt_EagerBlackHoling
  - | Opt_NoHsMain
  - | Opt_SplitSections
  - | Opt_StgStats
  - | Opt_HideAllPackages
  - | Opt_HideAllPluginPackages
  - | Opt_PrintBindResult
  - | Opt_Haddock
  - | Opt_HaddockOptions
  - | Opt_BreakOnException
  - | Opt_BreakOnError
  - | Opt_PrintEvldWithShow
  - | Opt_PrintBindContents
  - | Opt_GenManifest
  - | Opt_EmbedManifest
  - | Opt_SharedImplib
  - | Opt_BuildingCabalPackage
  - | Opt_IgnoreDotGhci
  - | Opt_GhciSandbox
  - | Opt_InsertBreakpoints
  - | Opt_GhciHistory
  - | Opt_GhciLeakCheck
  - | Opt_ValidateHie
  - | Opt_LocalGhciHistory
  - | Opt_NoIt
  - | Opt_HelpfulErrors
  - | Opt_DeferTypeErrors
  - | Opt_DeferTypedHoles
  - | Opt_DeferOutOfScopeVariables
  - | Opt_PIC
  - | Opt_PIE
  - | Opt_PICExecutable
  - | Opt_ExternalDynamicRefs
  - | Opt_Ticky
  - | Opt_Ticky_Allocd
  - | Opt_Ticky_LNE
  - | Opt_Ticky_Dyn_Thunk
  - | Opt_Ticky_Tag
  - | Opt_Ticky_AP
  - | Opt_CmmThreadSanitizer
  - | Opt_RPath
  - | Opt_RelativeDynlibPaths
  - | Opt_CompactUnwind
  - | Opt_Hpc
  - | Opt_FamAppCache
  - | Opt_ExternalInterpreter
  - | Opt_OptimalApplicativeDo
  - | Opt_VersionMacros
  - | Opt_WholeArchiveHsLibs
  - | Opt_SingleLibFolder
  - | Opt_ExposeInternalSymbols
  - | Opt_KeepCAFs
  - | Opt_KeepGoing
  - | Opt_ByteCode
  - | Opt_ByteCodeAndObjectCode
  - | Opt_UnoptimizedCoreForInterpreter
  - | Opt_LinkRts
  - | Opt_ErrorSpans
  - | Opt_DeferDiagnostics
  - | Opt_DiagnosticsShowCaret
  - | Opt_PprCaseAsLet
  - | Opt_PprShowTicks
  - | Opt_ShowHoleConstraints
  - | Opt_ShowValidHoleFits
  - | Opt_SortValidHoleFits
  - | Opt_SortBySizeHoleFits
  - | Opt_SortBySubsumHoleFits
  - | Opt_AbstractRefHoleFits
  - | Opt_UnclutterValidHoleFits
  - | Opt_ShowTypeAppOfHoleFits
  - | Opt_ShowTypeAppVarsOfHoleFits
  - | Opt_ShowDocsOfHoleFits
  - | Opt_ShowTypeOfHoleFits
  - | Opt_ShowProvOfHoleFits
  - | Opt_ShowMatchesOfHoleFits
  - | Opt_ShowLoadedModules
  - | Opt_HexWordLiterals
  - | Opt_SuppressCoercions
  - | Opt_SuppressCoercionTypes
  - | Opt_SuppressVarKinds
  - | Opt_SuppressModulePrefixes
  - | Opt_SuppressTypeApplications
  - | Opt_SuppressIdInfo
  - | Opt_SuppressUnfoldings
  - | Opt_SuppressTypeSignatures
  - | Opt_SuppressUniques
  - | Opt_SuppressStgExts
  - | Opt_SuppressStgReps
  - | Opt_SuppressTicks
  - | Opt_SuppressTimestamps
  - | Opt_SuppressCoreSizes
  - | Opt_ShowErrorContext
  - | Opt_AutoLinkPackages
  - | Opt_ImplicitImportQualified
  - | Opt_KeepHscppFiles
  - | Opt_KeepHiDiffs
  - | Opt_KeepHcFiles
  - | Opt_KeepSFiles
  - | Opt_KeepTmpFiles
  - | Opt_KeepRawTokenStream
  - | Opt_KeepLlvmFiles
  - | Opt_KeepHiFiles
  - | Opt_KeepOFiles
  - | Opt_BuildDynamicToo
  - | Opt_WriteIfSimplifiedCore
  - | Opt_UseBytecodeRatherThanObjects
  - | Opt_DistrustAllPackages
  - | Opt_PackageTrust
  - | Opt_PluginTrustworthy
  - | Opt_G_NoStateHack
  - | Opt_G_NoOptCoercion
- data PackageFlag
- data PackageArg
  - = PackageArg String
  - | UnitIdArg Unit
- data ModRenaming = ModRenaming {
  - modRenamingWithImplicit :: Bool
  - modRenamings :: [(ModuleName, ModuleName)]
  }
- pattern ExposePackage :: String -> PackageArg -> ModRenaming -> PackageFlag
- parseDynamicFlagsCmdLine :: MonadIO m => DynFlags -> [Located String] -> m (DynFlags, [Located String], Messages DriverMessage)
- parseDynamicFilePragma :: MonadIO m => DynFlags -> [Located String] -> m (DynFlags, [Located String], Messages DriverMessage)
- wWarningFlags :: [FlagSpec WarningFlag]
- updOptLevel :: Int -> DynFlags -> DynFlags
- setUnsafeGlobalDynFlags :: DynFlags -> IO ()
- scaledThing :: Scaled a -> a
- type IfaceExport = AvailInfo
- data IfaceTyCon = IfaceTyCon {
  - ifaceTyConName :: IfExtName
  - ifaceTyConInfo :: IfaceTyConInfo
  }
- type ModIface = ModIface_ 'ModIfaceFinal
- data ModIface_ (phase :: ModIfacePhase) = ModIface {
  - mi_module :: !Module
  - mi_sig_of :: !(Maybe Module)
  - mi_hsc_src :: !HscSource
  - mi_deps :: Dependencies
  - mi_usages :: [Usage]
  - mi_exports :: ![IfaceExport]
  - mi_used_th :: !Bool
  - mi_fixities :: [(OccName, Fixity)]
  - mi_warns :: IfaceWarnings
  - mi_anns :: [IfaceAnnotation]
  - mi_decls :: [IfaceDeclExts phase]
  - mi_extra_decls :: Maybe [IfaceBindingX IfaceMaybeRhs IfaceTopBndrInfo]
  - mi_globals :: !(Maybe IfGlobalRdrEnv)
  - mi_insts :: [IfaceClsInst]
  - mi_fam_insts :: [IfaceFamInst]
  - mi_rules :: [IfaceRule]
  - mi_hpc :: !AnyHpcUsage
  - mi_trust :: !IfaceTrustInfo
  - mi_trust_pkg :: !Bool
  - mi_complete_matches :: ![IfaceCompleteMatch]
  - mi_docs :: !(Maybe Docs)
  - mi_final_exts :: !(IfaceBackendExts phase)
  - mi_ext_fields :: !ExtensibleFields
  - mi_src_hash :: !Fingerprint
  }
- data HscSource where
  - HsSrcFile
  - HsBootOrSig !HsBootOrSig
  - pattern HsigFile :: HscSource
  - pattern HsBootFile :: HscSource
- data WhereFrom
  - = ImportByUser IsBootInterface
  - | ImportBySystem
  - | ImportByPlugin
- loadInterface :: SDoc -> Module -> WhereFrom -> IfM lcl (MaybeErr MissingInterfaceError ModIface)
- loadModuleInterface :: SDoc -> Module -> TcM ModIface
- data RecompileRequired
  - = UpToDate
  - | NeedsRecompile !CompileReason
- mkPartialIface :: HscEnv -> CoreProgram -> ModDetails -> ModSummary -> ModGuts -> PartialModIface
- mkFullIface :: HscEnv -> PartialModIface -> Maybe StgCgInfos -> Maybe CmmCgInfos -> IO ModIface
- data IsBootInterface
  - = NotBoot
  - | IsBoot
- data LexicalFixity
  - = Prefix
  - | Infix
- data Fixity = Fixity SourceText Int FixityDirection
- mi_fix :: ModIface -> OccName -> Fixity
- defaultFixity :: Fixity
- lookupFixityRn :: Name -> RnM Fixity
- data ModSummary = ModSummary {
  - ms_mod :: Module
  - ms_hsc_src :: HscSource
  - ms_location :: ModLocation
  - ms_hs_hash :: Fingerprint
  - ms_obj_date :: Maybe UTCTime
  - ms_dyn_obj_date :: !(Maybe UTCTime)
  - ms_iface_date :: Maybe UTCTime
  - ms_hie_date :: Maybe UTCTime
  - ms_srcimps :: [(PkgQual, Located ModuleName)]
  - ms_textual_imps :: [(PkgQual, Located ModuleName)]
  - ms_ghc_prim_import :: !Bool
  - ms_parsed_mod :: Maybe HsParsedModule
  - ms_hspp_file :: FilePath
  - ms_hspp_opts :: DynFlags
  - ms_hspp_buf :: Maybe StringBuffer
  }
- data HomeModInfo = HomeModInfo {
  - hm_iface :: !ModIface
  - hm_details :: ModDetails
  - hm_linkable :: !HomeModLinkable
  }
- data ModGuts = ModGuts {
  - mg_module :: !Module
  - mg_hsc_src :: HscSource
  - mg_loc :: SrcSpan
  - mg_exports :: ![AvailInfo]
  - mg_deps :: !Dependencies
  - mg_usages :: ![Usage]
  - mg_used_th :: !Bool
  - mg_rdr_env :: !GlobalRdrEnv
  - mg_fix_env :: !FixityEnv
  - mg_tcs :: ![TyCon]
  - mg_insts :: ![ClsInst]
  - mg_fam_insts :: ![FamInst]
  - mg_patsyns :: ![PatSyn]
  - mg_rules :: ![CoreRule]
  - mg_binds :: !CoreProgram
  - mg_foreign :: !ForeignStubs
  - mg_foreign_files :: ![(ForeignSrcLang, FilePath)]
  - mg_warns :: !(Warnings GhcRn)
  - mg_anns :: [Annotation]
  - mg_complete_matches :: [CompleteMatch]
  - mg_hpc_info :: !HpcInfo
  - mg_modBreaks :: !(Maybe ModBreaks)
  - mg_inst_env :: InstEnv
  - mg_fam_inst_env :: FamInstEnv
  - mg_boot_exports :: !NameSet
  - mg_safe_haskell :: SafeHaskellMode
  - mg_trust_pkg :: Bool
  - mg_docs :: !(Maybe Docs)
  }
- data CgGuts = CgGuts {
  - cg_module :: !Module
  - cg_tycons :: [TyCon]
  - cg_binds :: CoreProgram
  - cg_ccs :: [CostCentre]
  - cg_foreign :: !ForeignStubs
  - cg_foreign_files :: ![(ForeignSrcLang, FilePath)]
  - cg_dep_pkgs :: !(Set UnitId)
  - cg_hpc_info :: !HpcInfo
  - cg_modBreaks :: !(Maybe ModBreaks)
  - cg_spt_entries :: [SptEntry]
  }
- data ModDetails = ModDetails {
  - md_exports :: [AvailInfo]
  - md_types :: !TypeEnv
  - md_insts :: InstEnv
  - md_fam_insts :: ![FamInst]
  - md_rules :: ![CoreRule]
  - md_anns :: ![Annotation]
  - md_complete_matches :: [CompleteMatch]
  }
- data Type
  - = TyVarTy Var
  - | AppTy Type Type
  - | TyConApp TyCon [KindOrType]
  - | ForAllTy !ForAllTyBinder Type
  - | LitTy TyLit
  - | CastTy Type KindCoercion
  - | CoercionTy Coercion
- pattern FunTy :: FunTyFlag -> Type -> Type -> Type
- pattern ConPatIn :: Located (ConLikeP GhcPs) -> HsConPatDetails GhcPs -> Pat GhcPs
- conPatDetails :: Pat p -> Maybe (HsConPatDetails p)
- mapConPatDetail :: (HsConPatDetails p -> Maybe (HsConPatDetails p)) -> Pat p -> Maybe (Pat p)
- mkVisFunTys :: [Scaled Type] -> Type -> Type
- data ImpDeclSpec = ImpDeclSpec {
  - is_mod :: !Module
  - is_as :: !ModuleName
  - is_qual :: !Bool
  - is_dloc :: !SrcSpan
  }
- data ImportSpec = ImpSpec {
  - is_decl :: !ImpDeclSpec
  - is_item :: !ImpItemSpec
  }
- data SourceText
  - = SourceText FastString
  - | NoSourceText
- data Way
- wayGeneralFlags :: Platform -> Way -> [GeneralFlag]
- wayUnsetGeneralFlags :: Platform -> Way -> [GeneralFlag]
- data AvailInfo
- pattern AvailName :: Name -> AvailInfo
- pattern AvailFL :: FieldLabel -> AvailInfo
- pattern AvailTC :: Name -> [Name] -> [FieldLabel] -> AvailInfo
- availName :: AvailInfo -> Name
- availNames :: AvailInfo -> [Name]
- availsToNameSet :: [AvailInfo] -> NameSet
- data TcGblEnv = TcGblEnv {
  - tcg_mod :: Module
  - tcg_semantic_mod :: Module
  - tcg_src :: HscSource
  - tcg_rdr_env :: GlobalRdrEnv
  - tcg_default :: Maybe [Type]
  - tcg_fix_env :: FixityEnv
  - tcg_type_env :: TypeEnv
  - tcg_type_env_var :: KnotVars (IORef TypeEnv)
  - tcg_inst_env :: !InstEnv
  - tcg_fam_inst_env :: !FamInstEnv
  - tcg_ann_env :: AnnEnv
  - tcg_exports :: [AvailInfo]
  - tcg_imports :: ImportAvails
  - tcg_dus :: DefUses
  - tcg_used_gres :: TcRef [GlobalRdrElt]
  - tcg_keep :: TcRef NameSet
  - tcg_th_used :: TcRef Bool
  - tcg_th_splice_used :: TcRef Bool
  - tcg_th_needed_deps :: TcRef ([Linkable], PkgsLoaded)
  - tcg_dfun_n :: TcRef OccSet
  - tcg_merged :: [(Module, Fingerprint)]
  - tcg_rn_exports :: Maybe [(LIE GhcRn, Avails)]
  - tcg_rn_imports :: [LImportDecl GhcRn]
  - tcg_rn_decls :: Maybe (HsGroup GhcRn)
  - tcg_dependent_files :: TcRef [FilePath]
  - tcg_th_topdecls :: TcRef [LHsDecl GhcPs]
  - tcg_th_foreign_files :: TcRef [(ForeignSrcLang, FilePath)]
  - tcg_th_topnames :: TcRef NameSet
  - tcg_th_modfinalizers :: TcRef [(TcLclEnv, ThModFinalizers)]
  - tcg_th_coreplugins :: TcRef [String]
  - tcg_th_state :: TcRef (Map TypeRep Dynamic)
  - tcg_th_remote_state :: TcRef (Maybe (ForeignRef (IORef QState)))
  - tcg_th_docs :: TcRef THDocs
  - tcg_ev_binds :: Bag EvBind
  - tcg_tr_module :: Maybe Id
  - tcg_binds :: LHsBinds GhcTc
  - tcg_sigs :: NameSet
  - tcg_imp_specs :: [LTcSpecPrag]
  - tcg_warns :: Warnings GhcRn
  - tcg_anns :: [Annotation]
  - tcg_tcs :: [TyCon]
  - tcg_ksigs :: NameSet
  - tcg_insts :: [ClsInst]
  - tcg_fam_insts :: [FamInst]
  - tcg_rules :: [LRuleDecl GhcTc]
  - tcg_fords :: [LForeignDecl GhcTc]
  - tcg_patsyns :: [PatSyn]
  - tcg_doc_hdr :: Maybe (LHsDoc GhcRn)
  - tcg_hpc :: !AnyHpcUsage
  - tcg_self_boot :: SelfBootInfo
  - tcg_main :: Maybe Name
  - tcg_safe_infer :: TcRef Bool
  - tcg_safe_infer_reasons :: TcRef (Messages TcRnMessage)
  - tcg_tc_plugin_solvers :: [TcPluginSolver]
  - tcg_tc_plugin_rewriters :: UniqFM TyCon [TcPluginRewriter]
  - tcg_defaulting_plugins :: [FillDefaulting]
  - tcg_hf_plugins :: [HoleFitPlugin]
  - tcg_top_loc :: RealSrcSpan
  - tcg_static_wc :: TcRef WantedConstraints
  - tcg_complete_matches :: !CompleteMatches
  - tcg_cc_st :: TcRef CostCentreState
  - tcg_next_wrapper_num :: TcRef (ModuleEnv Int)
  }
- data HsModule p
  - = HsModule {
    - hsmodExt :: XCModule p
    - hsmodName :: Maybe (XRec p ModuleName)
    - hsmodExports :: Maybe (XRec p [LIE p])
    - hsmodImports :: [LImportDecl p]
    - hsmodDecls :: [LHsDecl p]
    }
  - | XModule !(XXModule p)
- type ParsedSource = Located (HsModule GhcPs)
- type RenamedSource = (HsGroup GhcRn, [LImportDecl GhcRn], Maybe [(LIE GhcRn, Avails)], Maybe (LHsDoc GhcRn))
- data HscEnv
- runGhc :: Maybe FilePath -> Ghc a -> IO a
- unGhc :: Ghc a -> Session -> IO a
- data Session = Session !(IORef HscEnv)
- modifySession :: GhcMonad m => (HscEnv -> HscEnv) -> m ()
- getSession :: GhcMonad m => m HscEnv
- setSessionDynFlags :: (HasCallStack, GhcMonad m) => DynFlags -> m ()
- getSessionDynFlags :: GhcMonad m => m DynFlags
- class (Functor m, ExceptionMonad m, HasDynFlags m, HasLogger m) => GhcMonad (m :: Type -> Type)
- data Ghc a
- runHsc :: HscEnv -> Hsc a -> IO a
- compileFile :: HscEnv -> StopPhase -> (FilePath, Maybe Phase) -> IO (Maybe FilePath)
- data Phase
  - = Unlit HscSource
  - | Cpp HscSource
  - | HsPp HscSource
  - | Hsc HscSource
  - | Ccxx
  - | Cc
  - | Cobjc
  - | Cobjcxx
  - | HCc
  - | As Bool
  - | LlvmOpt
  - | LlvmLlc
  - | LlvmMangle
  - | CmmCpp
  - | Cmm
  - | MergeForeign
  - | Js
  - | StopLn
- hscDesugar :: HscEnv -> ModSummary -> TcGblEnv -> IO ModGuts
- hscGenHardCode :: HscEnv -> CgGuts -> ModLocation -> FilePath -> IO (FilePath, Maybe FilePath, [(ForeignSrcLang, FilePath)], Maybe StgCgInfos, Maybe CmmCgInfos)
- hscInteractive :: HscEnv -> CgInteractiveGuts -> ModLocation -> IO (Maybe FilePath, CompiledByteCode, [SptEntry])
- hscSimplify :: HscEnv -> [String] -> ModGuts -> IO ModGuts
- hscTypecheckRename :: HscEnv -> ModSummary -> HsParsedModule -> IO (TcGblEnv, RenamedStuff)
- hscUpdateHPT :: (HomePackageTable -> HomePackageTable) -> HscEnv -> HscEnv
- makeSimpleDetails :: HscEnv -> TcGblEnv -> IO ModDetails
- tcSplitForAllTyVars :: Type -> ([TyVar], Type)
- tcSplitForAllTyVarBinder_maybe :: Type -> Maybe (TyVarBinder, Type)
- typecheckIface :: ModIface -> IfG ModDetails
- mkIfaceTc :: HscEnv -> SafeHaskellMode -> ModDetails -> ModSummary -> Maybe CoreProgram -> TcGblEnv -> IO ModIface
- mkBootModDetailsTc :: HscEnv -> TcGblEnv -> IO ModDetails
- initTidyOpts :: HscEnv -> IO TidyOpts
- driverNoStop :: StopPhase
- tidyProgram :: TidyOpts -> ModGuts -> IO (CgGuts, ModDetails)
- data ImportedModsVal = ImportedModsVal {
  - imv_name :: ModuleName
  - imv_span :: SrcSpan
  - imv_is_safe :: IsSafeImport
  - imv_is_hiding :: Bool
  - imv_all_exports :: !GlobalRdrEnv
  - imv_qualified :: Bool
  }
- importedByUser :: [ImportedBy] -> [ImportedModsVal]
- type TypecheckedSource = LHsBinds GhcTc
- class HasSrcSpan a
- type Located = GenLocated SrcSpan
- unLoc :: GenLocated l e -> e
- getLoc :: HasSrcSpan a => a -> SrcSpan
- getLocA :: GenLocated (SrcSpanAnn' a) e -> SrcSpan
- locA :: SrcSpanAnn' a -> SrcSpan
- noLocA :: a -> LocatedAn an a
- unLocA :: forall (pass :: Pass) a. XRec (GhcPass pass) a -> a
- type LocatedAn a = LocatedAn a
- type LocatedA = GenLocated SrcSpanAnnA
- data AnnListItem = AnnListItem {
  - lann_trailing :: [TrailingAnn]
  }
- data NameAnn
  - = NameAnn {
    - nann_adornment :: NameAdornment
    - nann_open :: EpaLocation
    - nann_name :: EpaLocation
    - nann_close :: EpaLocation
    - nann_trailing :: [TrailingAnn]
    }
  - | NameAnnCommas {
    - nann_adornment :: NameAdornment
    - nann_open :: EpaLocation
    - nann_commas :: [EpaLocation]
    - nann_close :: EpaLocation
    - nann_trailing :: [TrailingAnn]
    }
  - | NameAnnBars {
    - nann_adornment :: NameAdornment
    - nann_open :: EpaLocation
    - nann_bars :: [EpaLocation]
    - nann_close :: EpaLocation
    - nann_trailing :: [TrailingAnn]
    }
  - | NameAnnOnly {
    - nann_adornment :: NameAdornment
    - nann_open :: EpaLocation
    - nann_close :: EpaLocation
    - nann_trailing :: [TrailingAnn]
    }
  - | NameAnnRArrow {
    - nann_unicode :: Bool
    - nann_mopen :: Maybe EpaLocation
    - nann_name :: EpaLocation
    - nann_mclose :: Maybe EpaLocation
    - nann_trailing :: [TrailingAnn]
    }
  - | NameAnnQuote {
    - nann_quote :: EpaLocation
    - nann_quoted :: SrcSpanAnnN
    - nann_trailing :: [TrailingAnn]
    }
  - | NameAnnTrailing {
    - nann_trailing :: [TrailingAnn]
    }
- type RealLocated = GenLocated RealSrcSpan
- data GenLocated l e = L l e
- data SrcSpan = UnhelpfulSpan !UnhelpfulSpanReason
- data RealSrcSpan
- pattern RealSrcSpan :: RealSrcSpan -> Maybe BufSpan -> SrcSpan
- data RealSrcLoc
- pattern RealSrcLoc :: RealSrcLoc -> Maybe BufPos -> SrcLoc
- data SrcLoc = UnhelpfulLoc !FastString
- data BufSpan
- type SrcAnn ann = SrcSpanAnn' (EpAnn ann)
- leftmost_smallest :: SrcSpan -> SrcSpan -> Ordering
- containsSpan :: RealSrcSpan -> RealSrcSpan -> Bool
- mkGeneralSrcSpan :: FastString -> SrcSpan
- mkRealSrcSpan :: RealSrcLoc -> RealSrcLoc -> RealSrcSpan
- mkRealSrcLoc :: FastString -> Int -> Int -> RealSrcLoc
- getRealSrcSpan :: RealLocated a -> RealSrcSpan
- realSrcLocSpan :: RealSrcLoc -> RealSrcSpan
- realSrcSpanStart :: RealSrcSpan -> RealSrcLoc
- realSrcSpanEnd :: RealSrcSpan -> RealSrcLoc
- isSubspanOfA :: LocatedAn la a -> LocatedAn lb b -> Bool
- isSubspanOf :: SrcSpan -> SrcSpan -> Bool
- wiredInSrcSpan :: SrcSpan
- mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan
- srcSpanStart :: SrcSpan -> SrcLoc
- srcSpanStartLine :: RealSrcSpan -> Int
- srcSpanStartCol :: RealSrcSpan -> Int
- srcSpanEnd :: SrcSpan -> SrcLoc
- srcSpanEndLine :: RealSrcSpan -> Int
- srcSpanEndCol :: RealSrcSpan -> Int
- srcSpanFile :: RealSrcSpan -> FastString
- srcLocCol :: RealSrcLoc -> Int
- srcLocFile :: RealSrcLoc -> FastString
- srcLocLine :: RealSrcLoc -> Int
- noSrcSpan :: SrcSpan
- noSrcLoc :: SrcLoc
- noLoc :: e -> Located e
- mapLoc :: (a -> b) -> GenLocated l a -> GenLocated l b
- data FindResult
  - = Found ModLocation Module
  - | NoPackage Unit
  - | FoundMultiple [(Module, ModuleOrigin)]
  - | NotFound {
    - fr_paths :: [FilePath]
    - fr_pkg :: Maybe Unit
    - fr_mods_hidden :: [Unit]
    - fr_pkgs_hidden :: [Unit]
    - fr_unusables :: [UnusableUnit]
    - fr_suggestions :: [ModuleSuggestion]
    }
- mkHomeModLocation :: DynFlags -> ModuleName -> FilePath -> IO ModLocation
- findObjectLinkableMaybe :: Module -> ModLocation -> IO (Maybe Linkable)
- data InstalledFindResult
  - = InstalledFound ModLocation InstalledModule
  - | InstalledNoPackage UnitId
  - | InstalledNotFound [FilePath] (Maybe UnitId)
- data ModuleOrigin
  - = ModHidden
  - | ModUnusable !UnusableUnit
  - | ModOrigin {
    - fromOrigUnit :: Maybe Bool
    - fromExposedReexport :: [UnitInfo]
    - fromHiddenReexport :: [UnitInfo]
    - fromPackageFlag :: Bool
    }
- newtype PackageName = PackageName {
  - unPackageName :: FastString
  }
- data Unlinked
  - = DotO ObjFile
  - | DotA FilePath
  - | DotDLL FilePath
  - | CoreBindings WholeCoreBindings
  - | LoadedBCOs [Unlinked]
  - | BCOs CompiledByteCode [SptEntry]
- data Linkable = LM {
  - linkableTime :: !UTCTime
  - linkableModule :: !Module
  - linkableUnlinked :: [Unlinked]
  }
- unload :: HscEnv -> [Linkable] -> IO ()
- data Hooks
- runMetaHook :: Hooks -> Maybe (MetaHook TcM)
- type MetaHook (f :: Type -> Type) = MetaRequest -> LHsExpr GhcTc -> f MetaResult
- data MetaRequest
  - = MetaE (LHsExpr GhcPs -> MetaResult)
  - | MetaP (LPat GhcPs -> MetaResult)
  - | MetaT (LHsType GhcPs -> MetaResult)
  - | MetaD ([LHsDecl GhcPs] -> MetaResult)
  - | MetaAW (Serialized -> MetaResult)
- metaRequestE :: Functor f => MetaHook f -> LHsExpr GhcTc -> f (LHsExpr GhcPs)
- metaRequestP :: Functor f => MetaHook f -> LHsExpr GhcTc -> f (LPat GhcPs)
- metaRequestT :: Functor f => MetaHook f -> LHsExpr GhcTc -> f (LHsType GhcPs)
- metaRequestD :: Functor f => MetaHook f -> LHsExpr GhcTc -> f [LHsDecl GhcPs]
- metaRequestAW :: Functor f => MetaHook f -> LHsExpr GhcTc -> f Serialized
- addToHpt :: HomePackageTable -> ModuleName -> HomeModInfo -> HomePackageTable
- addListToHpt :: HomePackageTable -> [(ModuleName, HomeModInfo)] -> HomePackageTable
- data Target = Target {
  - targetId :: !TargetId
  - targetAllowObjCode :: !Bool
  - targetUnitId :: !UnitId
  - targetContents :: !(Maybe (InputFileBuffer, UTCTime))
  }
- data TargetId
  - = TargetModule !ModuleName
  - | TargetFile !FilePath !(Maybe Phase)
- mkSimpleTarget :: DynFlags -> FilePath -> Target
- initObjLinker :: HscEnv -> IO ()
- loadDLL :: HscEnv -> String -> IO (Maybe String)
- data InteractiveImport
  - = IIDecl (ImportDecl GhcPs)
  - | IIModule ModuleName
- getContext :: GhcMonad m => m [InteractiveImport]
- setContext :: GhcMonad m => [InteractiveImport] -> m ()
- parseImportDecl :: GhcMonad m => String -> m (ImportDecl GhcPs)
- runDecls :: GhcMonad m => String -> m [Name]
- type Warn = Located DriverMessage
- data ModLocation
- ml_hs_file :: ModLocation -> Maybe FilePath
- ml_obj_file :: ModLocation -> FilePath
- ml_hi_file :: ModLocation -> FilePath
- ml_hie_file :: ModLocation -> FilePath
- dataConExTyCoVars :: DataCon -> [TyCoVar]
- data Role
  - = Nominal
  - | Representational
  - | Phantom
- data PlainGhcException
- data CoreModule = CoreModule {
  - cm_module :: !Module
  - cm_types :: !TypeEnv
  - cm_binds :: CoreProgram
  - cm_safe :: SafeHaskellMode
  }
- data SafeHaskellMode
  - = Sf_None
  - | Sf_Unsafe
  - | Sf_Trustworthy
  - | Sf_Safe
  - | Sf_SafeInferred
  - | Sf_Ignore
- pattern GRE :: Name -> Parent -> Bool -> [ImportSpec] -> GlobalRdrElt
- gre_name :: GlobalRdrElt -> Name
- gre_imp :: GlobalRdrElt -> [ImportSpec]
- gre_lcl :: GlobalRdrElt -> Bool
- gre_par :: GlobalRdrElt -> Parent
- collectHsBindsBinders :: CollectPass p => Bag (XRec p (HsBindLR p idR)) -> [IdP p]
- class Uniquable a where
  - getUnique :: a -> Unique
- hasKey :: Uniquable a => a -> Unique -> Bool
- allNameStrings :: Infinite String
- allNameStringList :: [String]
- itName :: Unique -> SrcSpan -> Name
- mkUnboundName :: OccName -> Name
- isUnboundName :: Name -> Bool
- basicKnownKeyNames :: [Name]
- genericTyConNames :: [Name]
- pRELUDE :: Module
- gHC_PRIM :: Module
- gHC_PRIM_PANIC :: Module
- gHC_TYPES :: Module
- gHC_MAGIC :: Module
- gHC_MAGIC_DICT :: Module
- gHC_CSTRING :: Module
- gHC_CLASSES :: Module
- gHC_PRIMOPWRAPPERS :: Module
- gHC_BASE :: Module
- gHC_ENUM :: Module
- gHC_GHCI :: Module
- gHC_GHCI_HELPERS :: Module
- gHC_SHOW :: Module
- gHC_READ :: Module
- gHC_NUM :: Module
- gHC_MAYBE :: Module
- gHC_NUM_INTEGER :: Module
- gHC_NUM_NATURAL :: Module
- gHC_NUM_BIGNAT :: Module
- gHC_LIST :: Module
- gHC_TUPLE :: Module
- gHC_TUPLE_PRIM :: Module
- dATA_EITHER :: Module
- dATA_LIST :: Module
- dATA_STRING :: Module
- dATA_FOLDABLE :: Module
- dATA_TRAVERSABLE :: Module
- gHC_CONC :: Module
- gHC_IO :: Module
- gHC_IO_Exception :: Module
- gHC_ST :: Module
- gHC_IX :: Module
- gHC_STABLE :: Module
- gHC_PTR :: Module
- gHC_ERR :: Module
- gHC_REAL :: Module
- gHC_FLOAT :: Module
- gHC_TOP_HANDLER :: Module
- sYSTEM_IO :: Module
- dYNAMIC :: Module
- tYPEABLE :: Module
- tYPEABLE_INTERNAL :: Module
- gENERICS :: Module
- rEAD_PREC :: Module
- lEX :: Module
- gHC_INT :: Module
- gHC_WORD :: Module
- mONAD :: Module
- mONAD_FIX :: Module
- mONAD_ZIP :: Module
- mONAD_FAIL :: Module
- aRROW :: Module
- gHC_DESUGAR :: Module
- rANDOM :: Module
- gHC_EXTS :: Module
- gHC_IS_LIST :: Module
- cONTROL_EXCEPTION_BASE :: Module
- gHC_GENERICS :: Module
- gHC_TYPEERROR :: Module
- gHC_TYPELITS :: Module
- gHC_TYPELITS_INTERNAL :: Module
- gHC_TYPENATS :: Module
- gHC_TYPENATS_INTERNAL :: Module
- dATA_COERCE :: Module
- dEBUG_TRACE :: Module
- uNSAFE_COERCE :: Module
- fOREIGN_C_CONSTPTR :: Module
- gHC_SRCLOC :: Module
- gHC_STACK :: Module
- gHC_STACK_TYPES :: Module
- gHC_STATICPTR :: Module
- gHC_STATICPTR_INTERNAL :: Module
- gHC_FINGERPRINT_TYPE :: Module
- gHC_OVER_LABELS :: Module
- gHC_RECORDS :: Module
- rOOT_MAIN :: Module
- mkInteractiveModule :: String -> Module
- pRELUDE_NAME :: ModuleName
- mAIN_NAME :: ModuleName
- mkPrimModule :: FastString -> Module
- mkBignumModule :: FastString -> Module
- mkBaseModule :: FastString -> Module
- mkBaseModule_ :: ModuleName -> Module
- mkThisGhcModule :: FastString -> Module
- mkThisGhcModule_ :: ModuleName -> Module
- mkMainModule :: FastString -> Module
- mkMainModule_ :: ModuleName -> Module
- main_RDR_Unqual :: RdrName
- eq_RDR :: RdrName
- ge_RDR :: RdrName
- le_RDR :: RdrName
- lt_RDR :: RdrName
- gt_RDR :: RdrName
- compare_RDR :: RdrName
- ltTag_RDR :: RdrName
- eqTag_RDR :: RdrName
- gtTag_RDR :: RdrName
- eqClass_RDR :: RdrName
- numClass_RDR :: RdrName
- ordClass_RDR :: RdrName
- enumClass_RDR :: RdrName
- monadClass_RDR :: RdrName
- map_RDR :: RdrName
- append_RDR :: RdrName
- foldr_RDR :: RdrName
- build_RDR :: RdrName
- returnM_RDR :: RdrName
- bindM_RDR :: RdrName
- failM_RDR :: RdrName
- left_RDR :: RdrName
- right_RDR :: RdrName
- fromEnum_RDR :: RdrName
- toEnum_RDR :: RdrName
- enumFrom_RDR :: RdrName
- enumFromTo_RDR :: RdrName
- enumFromThen_RDR :: RdrName
- enumFromThenTo_RDR :: RdrName
- ratioDataCon_RDR :: RdrName
- integerAdd_RDR :: RdrName
- integerMul_RDR :: RdrName
- ioDataCon_RDR :: RdrName
- newStablePtr_RDR :: RdrName
- bindIO_RDR :: RdrName
- returnIO_RDR :: RdrName
- fromInteger_RDR :: RdrName
- fromRational_RDR :: RdrName
- minus_RDR :: RdrName
- times_RDR :: RdrName
- plus_RDR :: RdrName
- toInteger_RDR :: RdrName
- toRational_RDR :: RdrName
- fromIntegral_RDR :: RdrName
- fromString_RDR :: RdrName
- fromList_RDR :: RdrName
- fromListN_RDR :: RdrName
- toList_RDR :: RdrName
- compose_RDR :: RdrName
- and_RDR :: RdrName
- not_RDR :: RdrName
- dataToTag_RDR :: RdrName
- succ_RDR :: RdrName
- pred_RDR :: RdrName
- minBound_RDR :: RdrName
- maxBound_RDR :: RdrName
- range_RDR :: RdrName
- inRange_RDR :: RdrName
- index_RDR :: RdrName
- unsafeIndex_RDR :: RdrName
- unsafeRangeSize_RDR :: RdrName
- readList_RDR :: RdrName
- readListDefault_RDR :: RdrName
- readListPrec_RDR :: RdrName
- readListPrecDefault_RDR :: RdrName
- readPrec_RDR :: RdrName
- parens_RDR :: RdrName
- choose_RDR :: RdrName
- lexP_RDR :: RdrName
- expectP_RDR :: RdrName
- readField_RDR :: RdrName
- readFieldHash_RDR :: RdrName
- readSymField_RDR :: RdrName
- punc_RDR :: RdrName
- ident_RDR :: RdrName
- symbol_RDR :: RdrName
- step_RDR :: RdrName
- alt_RDR :: RdrName
- reset_RDR :: RdrName
- prec_RDR :: RdrName
- pfail_RDR :: RdrName
- showsPrec_RDR :: RdrName
- shows_RDR :: RdrName
- showString_RDR :: RdrName
- showSpace_RDR :: RdrName
- showCommaSpace_RDR :: RdrName
- showParen_RDR :: RdrName
- error_RDR :: RdrName
- u1DataCon_RDR :: RdrName
- par1DataCon_RDR :: RdrName
- rec1DataCon_RDR :: RdrName
- k1DataCon_RDR :: RdrName
- m1DataCon_RDR :: RdrName
- l1DataCon_RDR :: RdrName
- r1DataCon_RDR :: RdrName
- prodDataCon_RDR :: RdrName
- comp1DataCon_RDR :: RdrName
- unPar1_RDR :: RdrName
- unRec1_RDR :: RdrName
- unK1_RDR :: RdrName
- unComp1_RDR :: RdrName
- from_RDR :: RdrName
- from1_RDR :: RdrName
- to_RDR :: RdrName
- to1_RDR :: RdrName
- datatypeName_RDR :: RdrName
- moduleName_RDR :: RdrName
- packageName_RDR :: RdrName
- isNewtypeName_RDR :: RdrName
- selName_RDR :: RdrName
- conName_RDR :: RdrName
- conFixity_RDR :: RdrName
- conIsRecord_RDR :: RdrName
- prefixDataCon_RDR :: RdrName
- infixDataCon_RDR :: RdrName
- leftAssocDataCon_RDR :: RdrName
- rightAssocDataCon_RDR :: RdrName
- notAssocDataCon_RDR :: RdrName
- uAddrDataCon_RDR :: RdrName
- uCharDataCon_RDR :: RdrName
- uDoubleDataCon_RDR :: RdrName
- uFloatDataCon_RDR :: RdrName
- uIntDataCon_RDR :: RdrName
- uWordDataCon_RDR :: RdrName
- uAddrHash_RDR :: RdrName
- uCharHash_RDR :: RdrName
- uDoubleHash_RDR :: RdrName
- uFloatHash_RDR :: RdrName
- uIntHash_RDR :: RdrName
- uWordHash_RDR :: RdrName
- fmap_RDR :: RdrName
- replace_RDR :: RdrName
- pure_RDR :: RdrName
- ap_RDR :: RdrName
- liftA2_RDR :: RdrName
- foldable_foldr_RDR :: RdrName
- foldMap_RDR :: RdrName
- null_RDR :: RdrName
- all_RDR :: RdrName
- traverse_RDR :: RdrName
- mempty_RDR :: RdrName
- mappend_RDR :: RdrName
- varQual_RDR :: Module -> FastString -> RdrName
- tcQual_RDR :: Module -> FastString -> RdrName
- clsQual_RDR :: Module -> FastString -> RdrName
- dataQual_RDR :: Module -> FastString -> RdrName
- fieldQual_RDR :: Module -> FastString -> FastString -> RdrName
- wildCardName :: Name
- runMainIOName :: Name
- runRWName :: Name
- orderingTyConName :: Name
- ordLTDataConName :: Name
- ordEQDataConName :: Name
- ordGTDataConName :: Name
- specTyConName :: Name
- eitherTyConName :: Name
- leftDataConName :: Name
- rightDataConName :: Name
- voidTyConName :: Name
- v1TyConName :: Name
- u1TyConName :: Name
- par1TyConName :: Name
- rec1TyConName :: Name
- k1TyConName :: Name
- m1TyConName :: Name
- sumTyConName :: Name
- prodTyConName :: Name
- compTyConName :: Name
- rTyConName :: Name
- dTyConName :: Name
- cTyConName :: Name
- sTyConName :: Name
- rec0TyConName :: Name
- d1TyConName :: Name
- c1TyConName :: Name
- s1TyConName :: Name
- repTyConName :: Name
- rep1TyConName :: Name
- uRecTyConName :: Name
- uAddrTyConName :: Name
- uCharTyConName :: Name
- uDoubleTyConName :: Name
- uFloatTyConName :: Name
- uIntTyConName :: Name
- uWordTyConName :: Name
- prefixIDataConName :: Name
- infixIDataConName :: Name
- leftAssociativeDataConName :: Name
- rightAssociativeDataConName :: Name
- notAssociativeDataConName :: Name
- sourceUnpackDataConName :: Name
- sourceNoUnpackDataConName :: Name
- noSourceUnpackednessDataConName :: Name
- sourceLazyDataConName :: Name
- sourceStrictDataConName :: Name
- noSourceStrictnessDataConName :: Name
- decidedLazyDataConName :: Name
- decidedStrictDataConName :: Name
- decidedUnpackDataConName :: Name
- metaDataDataConName :: Name
- metaConsDataConName :: Name
- metaSelDataConName :: Name
- divIntName :: Name
- modIntName :: Name
- cstringLengthName :: Name
- eqStringName :: Name
- unpackCStringName :: Name
- unpackCStringAppendName :: Name
- unpackCStringFoldrName :: Name
- unpackCStringUtf8Name :: Name
- unpackCStringAppendUtf8Name :: Name
- unpackCStringFoldrUtf8Name :: Name
- inlineIdName :: Name
- eqClassName :: Name
- eqName :: Name
- ordClassName :: Name
- geName :: Name
- functorClassName :: Name
- fmapName :: Name
- monadClassName :: Name
- thenMName :: Name
- bindMName :: Name
- returnMName :: Name
- monadFailClassName :: Name
- failMName :: Name
- applicativeClassName :: Name
- apAName :: Name
- pureAName :: Name
- thenAName :: Name
- foldableClassName :: Name
- traversableClassName :: Name
- semigroupClassName :: Name
- sappendName :: Name
- monoidClassName :: Name
- memptyName :: Name
- mappendName :: Name
- mconcatName :: Name
- joinMName :: Name
- alternativeClassName :: Name
- joinMIdKey :: Unique
- apAClassOpKey :: Unique
- pureAClassOpKey :: Unique
- thenAClassOpKey :: Unique
- alternativeClassKey :: Unique
- considerAccessibleName :: Name
- dollarName :: Name
- otherwiseIdName :: Name
- foldrName :: Name
- buildName :: Name
- augmentName :: Name
- mapName :: Name
- appendName :: Name
- assertName :: Name
- fromStringName :: Name
- numClassName :: Name
- fromIntegerName :: Name
- minusName :: Name
- negateName :: Name
- bnbVarQual :: String -> Unique -> Name
- bnnVarQual :: String -> Unique -> Name
- bniVarQual :: String -> Unique -> Name
- bignatFromWordListName :: Name
- bignatEqName :: Name
- bignatCompareName :: Name
- bignatCompareWordName :: Name
- naturalToWordName :: Name
- naturalPopCountName :: Name
- naturalShiftRName :: Name
- naturalShiftLName :: Name
- naturalAddName :: Name
- naturalSubName :: Name
- naturalSubThrowName :: Name
- naturalSubUnsafeName :: Name
- naturalMulName :: Name
- naturalQuotRemName :: Name
- naturalQuotName :: Name
- naturalRemName :: Name
- naturalAndName :: Name
- naturalAndNotName :: Name
- naturalOrName :: Name
- naturalXorName :: Name
- naturalTestBitName :: Name
- naturalBitName :: Name
- naturalGcdName :: Name
- naturalLcmName :: Name
- naturalLog2Name :: Name
- naturalLogBaseWordName :: Name
- naturalLogBaseName :: Name
- naturalPowModName :: Name
- naturalSizeInBaseName :: Name
- integerFromNaturalName :: Name
- integerToNaturalClampName :: Name
- integerToNaturalThrowName :: Name
- integerToNaturalName :: Name
- integerToWordName :: Name
- integerToIntName :: Name
- integerToWord64Name :: Name
- integerToInt64Name :: Name
- integerFromWordName :: Name
- integerFromWord64Name :: Name
- integerFromInt64Name :: Name
- integerAddName :: Name
- integerMulName :: Name
- integerSubName :: Name
- integerNegateName :: Name
- integerAbsName :: Name
- integerPopCountName :: Name
- integerQuotName :: Name
- integerRemName :: Name
- integerDivName :: Name
- integerModName :: Name
- integerDivModName :: Name
- integerQuotRemName :: Name
- integerEncodeFloatName :: Name
- integerEncodeDoubleName :: Name
- integerGcdName :: Name
- integerLcmName :: Name
- integerAndName :: Name
- integerOrName :: Name
- integerXorName :: Name
- integerComplementName :: Name
- integerBitName :: Name
- integerTestBitName :: Name
- integerShiftLName :: Name
- integerShiftRName :: Name
- rationalTyConName :: Name
- ratioTyConName :: Name
- ratioDataConName :: Name
- realClassName :: Name
- integralClassName :: Name
- realFracClassName :: Name
- fractionalClassName :: Name
- fromRationalName :: Name
- toIntegerName :: Name
- toRationalName :: Name
- fromIntegralName :: Name
- realToFracName :: Name
- mkRationalBase2Name :: Name
- mkRationalBase10Name :: Name
- floatingClassName :: Name
- realFloatClassName :: Name
- integerToFloatName :: Name
- integerToDoubleName :: Name
- naturalToFloatName :: Name
- naturalToDoubleName :: Name
- rationalToFloatName :: Name
- rationalToDoubleName :: Name
- ixClassName :: Name
- trModuleTyConName :: Name
- trModuleDataConName :: Name
- trNameTyConName :: Name
- trNameSDataConName :: Name
- trNameDDataConName :: Name
- trTyConTyConName :: Name
- trTyConDataConName :: Name
- kindRepTyConName :: Name
- kindRepTyConAppDataConName :: Name
- kindRepVarDataConName :: Name
- kindRepAppDataConName :: Name
- kindRepFunDataConName :: Name
- kindRepTYPEDataConName :: Name
- kindRepTypeLitSDataConName :: Name
- kindRepTypeLitDDataConName :: Name
- typeLitSortTyConName :: Name
- typeLitSymbolDataConName :: Name
- typeLitNatDataConName :: Name
- typeLitCharDataConName :: Name
- typeableClassName :: Name
- typeRepTyConName :: Name
- someTypeRepTyConName :: Name
- someTypeRepDataConName :: Name
- typeRepIdName :: Name
- mkTrTypeName :: Name
- mkTrConName :: Name
- mkTrAppName :: Name
- mkTrFunName :: Name
- typeNatTypeRepName :: Name
- typeSymbolTypeRepName :: Name
- typeCharTypeRepName :: Name
- trGhcPrimModuleName :: Name
- starKindRepName :: Name
- starArrStarKindRepName :: Name
- starArrStarArrStarKindRepName :: Name
- constraintKindRepName :: Name
- withDictClassName :: Name
- nonEmptyTyConName :: Name
- errorMessageTypeErrorFamName :: Name
- typeErrorTextDataConName :: Name
- typeErrorAppendDataConName :: Name
- typeErrorVAppendDataConName :: Name
- typeErrorShowTypeDataConName :: Name
- unsatisfiableClassName :: Name
- unsatisfiableIdName :: Name
- unsafeEqualityProofName :: Name
- unsafeEqualityTyConName :: Name
- unsafeReflDataConName :: Name
- unsafeCoercePrimName :: Name
- toDynName :: Name
- dataClassName :: Name
- assertErrorName :: Name
- traceName :: Name
- enumClassName :: Name
- enumFromName :: Name
- enumFromToName :: Name
- enumFromThenName :: Name
- enumFromThenToName :: Name
- boundedClassName :: Name
- concatName :: Name
- filterName :: Name
- zipName :: Name
- isListClassName :: Name
- fromListName :: Name
- fromListNName :: Name
- toListName :: Name
- getFieldName :: Name
- setFieldName :: Name
- showClassName :: Name
- readClassName :: Name
- genClassName :: Name
- gen1ClassName :: Name
- datatypeClassName :: Name
- constructorClassName :: Name
- selectorClassName :: Name
- genericClassNames :: [Name]
- ghciIoClassName :: Name
- ghciStepIoMName :: Name
- ioTyConName :: Name
- ioDataConName :: Name
- thenIOName :: Name
- bindIOName :: Name
- returnIOName :: Name
- failIOName :: Name
- int8TyConName :: Name
- int16TyConName :: Name
- int32TyConName :: Name
- int64TyConName :: Name
- word8TyConName :: Name
- word16TyConName :: Name
- word32TyConName :: Name
- word64TyConName :: Name
- ptrTyConName :: Name
- funPtrTyConName :: Name
- stablePtrTyConName :: Name
- newStablePtrName :: Name
- monadFixClassName :: Name
- mfixName :: Name
- arrAName :: Name
- composeAName :: Name
- firstAName :: Name
- appAName :: Name
- choiceAName :: Name
- loopAName :: Name
- guardMName :: Name
- liftMName :: Name
- mzipName :: Name
- toAnnotationWrapperName :: Name
- monadPlusClassName :: Name
- isStringClassName :: Name
- knownNatClassName :: Name
- knownSymbolClassName :: Name
- knownCharClassName :: Name
- fromLabelClassOpName :: Name
- ipClassName :: Name
- hasFieldClassName :: Name
- callStackTyConName :: Name
- emptyCallStackName :: Name
- pushCallStackName :: Name
- srcLocDataConName :: Name
- pLUGINS :: Module
- pluginTyConName :: Name
- frontendPluginTyConName :: Name
- makeStaticName :: Name
- staticPtrInfoTyConName :: Name
- staticPtrInfoDataConName :: Name
- staticPtrTyConName :: Name
- staticPtrDataConName :: Name
- fromStaticPtrName :: Name
- fingerprintDataConName :: Name
- constPtrConName :: Name
- varQual :: Module -> FastString -> Unique -> Name
- tcQual :: Module -> FastString -> Unique -> Name
- clsQual :: Module -> FastString -> Unique -> Name
- dcQual :: Module -> FastString -> Unique -> Name
- mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name
- boundedClassKey :: Unique
- enumClassKey :: Unique
- eqClassKey :: Unique
- floatingClassKey :: Unique
- fractionalClassKey :: Unique
- integralClassKey :: Unique
- monadClassKey :: Unique
- dataClassKey :: Unique
- functorClassKey :: Unique
- numClassKey :: Unique
- ordClassKey :: Unique
- readClassKey :: Unique
- realClassKey :: Unique
- realFloatClassKey :: Unique
- realFracClassKey :: Unique
- showClassKey :: Unique
- ixClassKey :: Unique
- typeableClassKey :: Unique
- withDictClassKey :: Unique
- monadFixClassKey :: Unique
- monadFailClassKey :: Unique
- monadPlusClassKey :: Unique
- randomClassKey :: Unique
- randomGenClassKey :: Unique
- isStringClassKey :: Unique
- applicativeClassKey :: Unique
- foldableClassKey :: Unique
- traversableClassKey :: Unique
- genClassKey :: Unique
- gen1ClassKey :: Unique
- datatypeClassKey :: Unique
- constructorClassKey :: Unique
- selectorClassKey :: Unique
- knownNatClassNameKey :: Unique
- knownSymbolClassNameKey :: Unique
- knownCharClassNameKey :: Unique
- ghciIoClassKey :: Unique
- semigroupClassKey :: Unique
- monoidClassKey :: Unique
- ipClassKey :: Unique
- hasFieldClassNameKey :: Unique
- addrPrimTyConKey :: Unique
- arrayPrimTyConKey :: Unique
- boolTyConKey :: Unique
- byteArrayPrimTyConKey :: Unique
- stringTyConKey :: Unique
- charPrimTyConKey :: Unique
- charTyConKey :: Unique
- doublePrimTyConKey :: Unique
- doubleTyConKey :: Unique
- floatPrimTyConKey :: Unique
- floatTyConKey :: Unique
- fUNTyConKey :: Unique
- intPrimTyConKey :: Unique
- intTyConKey :: Unique
- int8PrimTyConKey :: Unique
- int8TyConKey :: Unique
- int16PrimTyConKey :: Unique
- int16TyConKey :: Unique
- int32PrimTyConKey :: Unique
- int32TyConKey :: Unique
- int64PrimTyConKey :: Unique
- int64TyConKey :: Unique
- integerTyConKey :: Unique
- naturalTyConKey :: Unique
- listTyConKey :: Unique
- foreignObjPrimTyConKey :: Unique
- maybeTyConKey :: Unique
- weakPrimTyConKey :: Unique
- mutableArrayPrimTyConKey :: Unique
- mutableByteArrayPrimTyConKey :: Unique
- orderingTyConKey :: Unique
- mVarPrimTyConKey :: Unique
- ioPortPrimTyConKey :: Unique
- ratioTyConKey :: Unique
- rationalTyConKey :: Unique
- realWorldTyConKey :: Unique
- stablePtrPrimTyConKey :: Unique
- stablePtrTyConKey :: Unique
- eqTyConKey :: Unique
- heqTyConKey :: Unique
- ctArrowTyConKey :: Unique
- ccArrowTyConKey :: Unique
- tcArrowTyConKey :: Unique
- statePrimTyConKey :: Unique
- stableNamePrimTyConKey :: Unique
- stableNameTyConKey :: Unique
- eqPrimTyConKey :: Unique
- eqReprPrimTyConKey :: Unique
- eqPhantPrimTyConKey :: Unique
- mutVarPrimTyConKey :: Unique
- ioTyConKey :: Unique
- wordPrimTyConKey :: Unique
- wordTyConKey :: Unique
- word8PrimTyConKey :: Unique
- word8TyConKey :: Unique
- word16PrimTyConKey :: Unique
- word16TyConKey :: Unique
- word32PrimTyConKey :: Unique
- word32TyConKey :: Unique
- word64PrimTyConKey :: Unique
- word64TyConKey :: Unique
- kindConKey :: Unique
- boxityConKey :: Unique
- typeConKey :: Unique
- threadIdPrimTyConKey :: Unique
- bcoPrimTyConKey :: Unique
- ptrTyConKey :: Unique
- funPtrTyConKey :: Unique
- tVarPrimTyConKey :: Unique
- compactPrimTyConKey :: Unique
- stackSnapshotPrimTyConKey :: Unique
- promptTagPrimTyConKey :: Unique
- eitherTyConKey :: Unique
- voidTyConKey :: Unique
- nonEmptyTyConKey :: Unique
- dictTyConKey :: Unique
- liftedTypeKindTyConKey :: Unique
- unliftedTypeKindTyConKey :: Unique
- tYPETyConKey :: Unique
- cONSTRAINTTyConKey :: Unique
- constraintKindTyConKey :: Unique
- levityTyConKey :: Unique
- runtimeRepTyConKey :: Unique
- vecCountTyConKey :: Unique
- vecElemTyConKey :: Unique
- liftedRepTyConKey :: Unique
- unliftedRepTyConKey :: Unique
- zeroBitRepTyConKey :: Unique
- zeroBitTypeTyConKey :: Unique
- pluginTyConKey :: Unique
- frontendPluginTyConKey :: Unique
- trTyConTyConKey :: Unique
- trModuleTyConKey :: Unique
- trNameTyConKey :: Unique
- kindRepTyConKey :: Unique
- typeLitSortTyConKey :: Unique
- v1TyConKey :: Unique
- u1TyConKey :: Unique
- par1TyConKey :: Unique
- rec1TyConKey :: Unique
- k1TyConKey :: Unique
- m1TyConKey :: Unique
- sumTyConKey :: Unique
- prodTyConKey :: Unique
- compTyConKey :: Unique
- rTyConKey :: Unique
- dTyConKey :: Unique
- cTyConKey :: Unique
- sTyConKey :: Unique
- rec0TyConKey :: Unique
- d1TyConKey :: Unique
- c1TyConKey :: Unique
- s1TyConKey :: Unique
- repTyConKey :: Unique
- rep1TyConKey :: Unique
- uRecTyConKey :: Unique
- uAddrTyConKey :: Unique
- uCharTyConKey :: Unique
- uDoubleTyConKey :: Unique
- uFloatTyConKey :: Unique
- uIntTyConKey :: Unique
- uWordTyConKey :: Unique
- unsatisfiableClassNameKey :: Unique
- errorMessageTypeErrorFamKey :: Unique
- coercibleTyConKey :: Unique
- proxyPrimTyConKey :: Unique
- specTyConKey :: Unique
- anyTyConKey :: Unique
- smallArrayPrimTyConKey :: Unique
- smallMutableArrayPrimTyConKey :: Unique
- staticPtrTyConKey :: Unique
- staticPtrInfoTyConKey :: Unique
- callStackTyConKey :: Unique
- typeRepTyConKey :: Unique
- someTypeRepTyConKey :: Unique
- someTypeRepDataConKey :: Unique
- typeSymbolAppendFamNameKey :: Unique
- unsafeEqualityTyConKey :: Unique
- multiplicityTyConKey :: Unique
- unrestrictedFunTyConKey :: Unique
- multMulTyConKey :: Unique
- int8X16PrimTyConKey :: Unique
- int16X8PrimTyConKey :: Unique
- int32X4PrimTyConKey :: Unique
- int64X2PrimTyConKey :: Unique
- int8X32PrimTyConKey :: Unique
- int16X16PrimTyConKey :: Unique
- int32X8PrimTyConKey :: Unique
- int64X4PrimTyConKey :: Unique
- int8X64PrimTyConKey :: Unique
- int16X32PrimTyConKey :: Unique
- int32X16PrimTyConKey :: Unique
- int64X8PrimTyConKey :: Unique
- word8X16PrimTyConKey :: Unique
- word16X8PrimTyConKey :: Unique
- word32X4PrimTyConKey :: Unique
- word64X2PrimTyConKey :: Unique
- word8X32PrimTyConKey :: Unique
- word16X16PrimTyConKey :: Unique
- word32X8PrimTyConKey :: Unique
- word64X4PrimTyConKey :: Unique
- word8X64PrimTyConKey :: Unique
- word16X32PrimTyConKey :: Unique
- word32X16PrimTyConKey :: Unique
- word64X8PrimTyConKey :: Unique
- floatX4PrimTyConKey :: Unique
- doubleX2PrimTyConKey :: Unique
- floatX8PrimTyConKey :: Unique
- doubleX4PrimTyConKey :: Unique
- floatX16PrimTyConKey :: Unique
- doubleX8PrimTyConKey :: Unique
- typeSymbolKindConNameKey :: Unique
- typeCharKindConNameKey :: Unique
- typeNatAddTyFamNameKey :: Unique
- typeNatMulTyFamNameKey :: Unique
- typeNatExpTyFamNameKey :: Unique
- typeNatSubTyFamNameKey :: Unique
- typeSymbolCmpTyFamNameKey :: Unique
- typeNatCmpTyFamNameKey :: Unique
- typeCharCmpTyFamNameKey :: Unique
- typeLeqCharTyFamNameKey :: Unique
- typeNatDivTyFamNameKey :: Unique
- typeNatModTyFamNameKey :: Unique
- typeNatLogTyFamNameKey :: Unique
- typeConsSymbolTyFamNameKey :: Unique
- typeUnconsSymbolTyFamNameKey :: Unique
- typeCharToNatTyFamNameKey :: Unique
- typeNatToCharTyFamNameKey :: Unique
- constPtrTyConKey :: Unique
- charDataConKey :: Unique
- consDataConKey :: Unique
- doubleDataConKey :: Unique
- falseDataConKey :: Unique
- floatDataConKey :: Unique
- intDataConKey :: Unique
- nothingDataConKey :: Unique
- justDataConKey :: Unique
- eqDataConKey :: Unique
- nilDataConKey :: Unique
- ratioDataConKey :: Unique
- word8DataConKey :: Unique
- stableNameDataConKey :: Unique
- trueDataConKey :: Unique
- wordDataConKey :: Unique
- ioDataConKey :: Unique
- heqDataConKey :: Unique
- crossDataConKey :: Unique
- inlDataConKey :: Unique
- inrDataConKey :: Unique
- genUnitDataConKey :: Unique
- leftDataConKey :: Unique
- rightDataConKey :: Unique
- ordLTDataConKey :: Unique
- ordEQDataConKey :: Unique
- ordGTDataConKey :: Unique
- mkDictDataConKey :: Unique
- coercibleDataConKey :: Unique
- staticPtrDataConKey :: Unique
- staticPtrInfoDataConKey :: Unique
- fingerprintDataConKey :: Unique
- srcLocDataConKey :: Unique
- trTyConDataConKey :: Unique
- trModuleDataConKey :: Unique
- trNameSDataConKey :: Unique
- trNameDDataConKey :: Unique
- trGhcPrimModuleKey :: Unique
- typeErrorTextDataConKey :: Unique
- typeErrorAppendDataConKey :: Unique
- typeErrorVAppendDataConKey :: Unique
- typeErrorShowTypeDataConKey :: Unique
- prefixIDataConKey :: Unique
- infixIDataConKey :: Unique
- leftAssociativeDataConKey :: Unique
- rightAssociativeDataConKey :: Unique
- notAssociativeDataConKey :: Unique
- sourceUnpackDataConKey :: Unique
- sourceNoUnpackDataConKey :: Unique
- noSourceUnpackednessDataConKey :: Unique
- sourceLazyDataConKey :: Unique
- sourceStrictDataConKey :: Unique
- noSourceStrictnessDataConKey :: Unique
- decidedLazyDataConKey :: Unique
- decidedStrictDataConKey :: Unique
- decidedUnpackDataConKey :: Unique
- metaDataDataConKey :: Unique
- metaConsDataConKey :: Unique
- metaSelDataConKey :: Unique
- vecRepDataConKey :: Unique
- tupleRepDataConKey :: Unique
- sumRepDataConKey :: Unique
- boxedRepDataConKey :: Unique
- boxedRepDataConTyConKey :: Unique
- tupleRepDataConTyConKey :: Unique
- runtimeRepSimpleDataConKeys :: [Unique]
- liftedDataConKey :: Unique
- unliftedDataConKey :: Unique
- vecCountDataConKeys :: [Unique]
- vecElemDataConKeys :: [Unique]
- kindRepTyConAppDataConKey :: Unique
- kindRepVarDataConKey :: Unique
- kindRepAppDataConKey :: Unique
- kindRepFunDataConKey :: Unique
- kindRepTYPEDataConKey :: Unique
- kindRepTypeLitSDataConKey :: Unique
- kindRepTypeLitDDataConKey :: Unique
- typeLitSymbolDataConKey :: Unique
- typeLitNatDataConKey :: Unique
- typeLitCharDataConKey :: Unique
- unsafeReflDataConKey :: Unique
- oneDataConKey :: Unique
- manyDataConKey :: Unique
- integerISDataConKey :: Unique
- integerINDataConKey :: Unique
- integerIPDataConKey :: Unique
- naturalNSDataConKey :: Unique
- naturalNBDataConKey :: Unique
- wildCardKey :: Unique
- absentErrorIdKey :: Unique
- absentConstraintErrorIdKey :: Unique
- augmentIdKey :: Unique
- appendIdKey :: Unique
- buildIdKey :: Unique
- foldrIdKey :: Unique
- recSelErrorIdKey :: Unique
- seqIdKey :: Unique
- absentSumFieldErrorIdKey :: Unique
- eqStringIdKey :: Unique
- noMethodBindingErrorIdKey :: Unique
- nonExhaustiveGuardsErrorIdKey :: Unique
- impossibleErrorIdKey :: Unique
- impossibleConstraintErrorIdKey :: Unique
- patErrorIdKey :: Unique
- realWorldPrimIdKey :: Unique
- recConErrorIdKey :: Unique
- unpackCStringUtf8IdKey :: Unique
- unpackCStringAppendUtf8IdKey :: Unique
- unpackCStringFoldrUtf8IdKey :: Unique
- unpackCStringIdKey :: Unique
- unpackCStringAppendIdKey :: Unique
- unpackCStringFoldrIdKey :: Unique
- voidPrimIdKey :: Unique
- typeErrorIdKey :: Unique
- divIntIdKey :: Unique
- modIntIdKey :: Unique
- cstringLengthIdKey :: Unique
- concatIdKey :: Unique
- filterIdKey :: Unique
- zipIdKey :: Unique
- bindIOIdKey :: Unique
- returnIOIdKey :: Unique
- newStablePtrIdKey :: Unique
- printIdKey :: Unique
- failIOIdKey :: Unique
- nullAddrIdKey :: Unique
- voidArgIdKey :: Unique
- otherwiseIdKey :: Unique
- assertIdKey :: Unique
- leftSectionKey :: Unique
- rightSectionKey :: Unique
- rootMainKey :: Unique
- runMainKey :: Unique
- thenIOIdKey :: Unique
- lazyIdKey :: Unique
- assertErrorIdKey :: Unique
- oneShotKey :: Unique
- runRWKey :: Unique
- traceKey :: Unique
- nospecIdKey :: Unique
- inlineIdKey :: Unique
- mapIdKey :: Unique
- dollarIdKey :: Unique
- coercionTokenIdKey :: Unique
- considerAccessibleIdKey :: Unique
- noinlineIdKey :: Unique
- noinlineConstraintIdKey :: Unique
- integerToFloatIdKey :: Unique
- integerToDoubleIdKey :: Unique
- naturalToFloatIdKey :: Unique
- naturalToDoubleIdKey :: Unique
- rationalToFloatIdKey :: Unique
- rationalToDoubleIdKey :: Unique
- coerceKey :: Unique
- unboundKey :: Unique
- fromIntegerClassOpKey :: Unique
- minusClassOpKey :: Unique
- fromRationalClassOpKey :: Unique
- enumFromClassOpKey :: Unique
- enumFromThenClassOpKey :: Unique
- enumFromToClassOpKey :: Unique
- enumFromThenToClassOpKey :: Unique
- eqClassOpKey :: Unique
- geClassOpKey :: Unique
- negateClassOpKey :: Unique
- bindMClassOpKey :: Unique
- thenMClassOpKey :: Unique
- fmapClassOpKey :: Unique
- returnMClassOpKey :: Unique
- mfixIdKey :: Unique
- failMClassOpKey :: Unique
- fromLabelClassOpKey :: Unique
- arrAIdKey :: Unique
- composeAIdKey :: Unique
- firstAIdKey :: Unique
- appAIdKey :: Unique
- choiceAIdKey :: Unique
- loopAIdKey :: Unique
- fromStringClassOpKey :: Unique
- toAnnotationWrapperIdKey :: Unique
- fromIntegralIdKey :: Unique
- realToFracIdKey :: Unique
- toIntegerClassOpKey :: Unique
- toRationalClassOpKey :: Unique
- guardMIdKey :: Unique
- liftMIdKey :: Unique
- mzipIdKey :: Unique
- ghciStepIoMClassOpKey :: Unique
- isListClassKey :: Unique
- fromListClassOpKey :: Unique
- fromListNClassOpKey :: Unique
- toListClassOpKey :: Unique
- proxyHashKey :: Unique
- mkTyConKey :: Unique
- mkTrTypeKey :: Unique
- mkTrConKey :: Unique
- mkTrAppKey :: Unique
- typeNatTypeRepKey :: Unique
- typeSymbolTypeRepKey :: Unique
- typeCharTypeRepKey :: Unique
- typeRepIdKey :: Unique
- mkTrFunKey :: Unique
- starKindRepKey :: Unique
- starArrStarKindRepKey :: Unique
- starArrStarArrStarKindRepKey :: Unique
- constraintKindRepKey :: Unique
- toDynIdKey :: Unique
- eqSCSelIdKey :: Unique
- heqSCSelIdKey :: Unique
- coercibleSCSelIdKey :: Unique
- sappendClassOpKey :: Unique
- memptyClassOpKey :: Unique
- mappendClassOpKey :: Unique
- mconcatClassOpKey :: Unique
- emptyCallStackKey :: Unique
- pushCallStackKey :: Unique
- fromStaticPtrClassOpKey :: Unique
- makeStaticKey :: Unique
- unsafeEqualityProofIdKey :: Unique
- unsafeCoercePrimIdKey :: Unique
- getFieldClassOpKey :: Unique
- setFieldClassOpKey :: Unique
- unsatisfiableIdNameKey :: Unique
- integerFromNaturalIdKey :: Unique
- integerToNaturalClampIdKey :: Unique
- integerToNaturalThrowIdKey :: Unique
- integerToNaturalIdKey :: Unique
- integerToWordIdKey :: Unique
- integerToIntIdKey :: Unique
- integerToWord64IdKey :: Unique
- integerToInt64IdKey :: Unique
- integerAddIdKey :: Unique
- integerMulIdKey :: Unique
- integerSubIdKey :: Unique
- integerNegateIdKey :: Unique
- integerAbsIdKey :: Unique
- integerPopCountIdKey :: Unique
- integerQuotIdKey :: Unique
- integerRemIdKey :: Unique
- integerDivIdKey :: Unique
- integerModIdKey :: Unique
- integerDivModIdKey :: Unique
- integerQuotRemIdKey :: Unique
- integerEncodeFloatIdKey :: Unique
- integerEncodeDoubleIdKey :: Unique
- integerGcdIdKey :: Unique
- integerLcmIdKey :: Unique
- integerAndIdKey :: Unique
- integerOrIdKey :: Unique
- integerXorIdKey :: Unique
- integerComplementIdKey :: Unique
- integerBitIdKey :: Unique
- integerTestBitIdKey :: Unique
- integerShiftLIdKey :: Unique
- integerShiftRIdKey :: Unique
- integerFromWordIdKey :: Unique
- integerFromWord64IdKey :: Unique
- integerFromInt64IdKey :: Unique
- naturalToWordIdKey :: Unique
- naturalPopCountIdKey :: Unique
- naturalShiftRIdKey :: Unique
- naturalShiftLIdKey :: Unique
- naturalAddIdKey :: Unique
- naturalSubIdKey :: Unique
- naturalSubThrowIdKey :: Unique
- naturalSubUnsafeIdKey :: Unique
- naturalMulIdKey :: Unique
- naturalQuotRemIdKey :: Unique
- naturalQuotIdKey :: Unique
- naturalRemIdKey :: Unique
- naturalAndIdKey :: Unique
- naturalAndNotIdKey :: Unique
- naturalOrIdKey :: Unique
- naturalXorIdKey :: Unique
- naturalTestBitIdKey :: Unique
- naturalBitIdKey :: Unique
- naturalGcdIdKey :: Unique
- naturalLcmIdKey :: Unique
- naturalLog2IdKey :: Unique
- naturalLogBaseWordIdKey :: Unique
- naturalLogBaseIdKey :: Unique
- naturalPowModIdKey :: Unique
- naturalSizeInBaseIdKey :: Unique
- bignatFromWordListIdKey :: Unique
- bignatEqIdKey :: Unique
- bignatCompareIdKey :: Unique
- bignatCompareWordIdKey :: Unique
- mkRationalBase2IdKey :: Unique
- mkRationalBase10IdKey :: Unique
- numericClassKeys :: [Unique]
- fractionalClassKeys :: [Unique]
- standardClassKeys :: [Unique]
- derivableClassKeys :: [Unique]
- interactiveClassNames :: [Name]
- interactiveClassKeys :: [Unique]
- pretendNameIsInScope :: Name -> Bool
- module GHC.Builtin.Types
- module GHC.Builtin.Types.Prim
- module GHC.Builtin.Utils
- module GHC.Core.Class
- module GHC.Core.Coercion
- module GHC.Core.ConLike
- data SrcUnpackedness
  - = SrcUnpack
  - | SrcNoUnpack
  - | NoSrcUnpack
- data SrcStrictness
  - = SrcLazy
  - | SrcStrict
  - | NoSrcStrict
- data FieldLabelString
- type ConTag = Int
- data FieldLabel = FieldLabel {
  - flHasDuplicateRecordFields :: DuplicateRecordFields
  - flHasFieldSelector :: FieldSelectors
  - flSelector :: Name
  }
- flLabel :: FieldLabel -> FieldLabelString
- fIRST_TAG :: ConTag
- data EqSpec
- data DataConRep
  - = NoDataConRep
  - | DCR {
    - dcr_wrap_id :: Id
    - dcr_boxer :: DataConBoxer
    - dcr_arg_tys :: [Scaled Type]
    - dcr_stricts :: [StrictnessMark]
    - dcr_bangs :: [HsImplBang]
    }
- data DataCon
- promoteDataCon :: DataCon -> TyCon
- dataConWrapId :: DataCon -> Id
- isTypeDataCon :: DataCon -> Bool
- isUnboxedSumDataCon :: DataCon -> Bool
- dataConFullSig :: DataCon -> ([TyVar], [TyCoVar], [EqSpec], ThetaType, [Scaled Type], Type)
- dataConStupidTheta :: DataCon -> ThetaType
- dataConInstOrigArgTys :: DataCon -> [Type] -> [Scaled Type]
- dataConFieldLabels :: DataCon -> [FieldLabel]
- dataConSourceArity :: DataCon -> Arity
- dataConUserTyVarBinders :: DataCon -> [InvisTVBinder]
- dataConUserTyVars :: DataCon -> [TyVar]
- dataConTyCon :: DataCon -> TyCon
- dataConWorkId :: DataCon -> Id
- dataConName :: DataCon -> Name
- data StrictnessMark
  - = MarkedStrict
  - | NotMarkedStrict
- data HsImplBang
  - = HsLazy
  - | HsStrict Bool
  - | HsUnpack (Maybe Coercion)
- data HsSrcBang = HsSrcBang SourceText SrcUnpackedness SrcStrictness
- type DataConEnv a = UniqFM DataCon a
- mkEqSpec :: TyVar -> Type -> EqSpec
- eqSpecTyVar :: EqSpec -> TyVar
- eqSpecType :: EqSpec -> Type
- eqSpecPair :: EqSpec -> (TyVar, Type)
- eqSpecPreds :: [EqSpec] -> ThetaType
- eqHsBang :: HsImplBang -> HsImplBang -> Bool
- isBanged :: HsImplBang -> Bool
- isSrcStrict :: SrcStrictness -> Bool
- isSrcUnpacked :: SrcUnpackedness -> Bool
- isMarkedStrict :: StrictnessMark -> Bool
- cbvFromStrictMark :: StrictnessMark -> CbvMark
- mkDataCon :: Name -> Bool -> TyConRepName -> [HsSrcBang] -> [FieldLabel] -> [TyVar] -> [TyCoVar] -> [InvisTVBinder] -> [EqSpec] -> KnotTied ThetaType -> [KnotTied (Scaled Type)] -> KnotTied Type -> PromDataConInfo -> KnotTied TyCon -> ConTag -> ThetaType -> Id -> DataConRep -> DataCon
- dataConTag :: DataCon -> ConTag
- dataConTagZ :: DataCon -> ConTagZ
- dataConOrigTyCon :: DataCon -> TyCon
- dataConRepType :: DataCon -> Type
- dataConIsInfix :: DataCon -> Bool
- dataConUnivTyVars :: DataCon -> [TyVar]
- dataConUnivAndExTyCoVars :: DataCon -> [TyCoVar]
- dataConTheta :: DataCon -> ThetaType
- dataConWrapId_maybe :: DataCon -> Maybe Id
- dataConImplicitTyThings :: DataCon -> [TyThing]
- dataConFieldType :: DataCon -> FieldLabelString -> Type
- dataConFieldType_maybe :: DataCon -> FieldLabelString -> Maybe (FieldLabel, Type)
- dataConSrcBangs :: DataCon -> [HsSrcBang]
- dataConRepArity :: DataCon -> Arity
- isNullarySrcDataCon :: DataCon -> Bool
- isNullaryRepDataCon :: DataCon -> Bool
- dataConRepStrictness :: DataCon -> [StrictnessMark]
- dataConImplBangs :: DataCon -> [HsImplBang]
- dataConBoxer :: DataCon -> Maybe DataConBoxer
- dataConInstSig :: DataCon -> [Type] -> ([TyCoVar], ThetaType, [Type])
- dataConOrigResTy :: DataCon -> Type
- dataConWrapperType :: DataCon -> Type
- dataConNonlinearType :: DataCon -> Type
- dataConDisplayType :: Bool -> DataCon -> Type
- dataConInstArgTys :: DataCon -> [Type] -> [Scaled Type]
- dataConInstUnivs :: DataCon -> [Type] -> [Type]
- dataConOrigArgTys :: DataCon -> [Scaled Type]
- dataConOtherTheta :: DataCon -> ThetaType
- dataConRepArgTys :: DataCon -> [Scaled Type]
- dataConIdentity :: DataCon -> ByteString
- isTupleDataCon :: DataCon -> Bool
- isBoxedTupleDataCon :: DataCon -> Bool
- isUnboxedTupleDataCon :: DataCon -> Bool
- isVanillaDataCon :: DataCon -> Bool
- isNewDataCon :: DataCon -> Bool
- isCovertGadtDataCon :: DataCon -> Bool
- specialPromotedDc :: DataCon -> Bool
- classDataCon :: Class -> DataCon
- dataConCannotMatch :: [Type] -> DataCon -> Bool
- dataConResRepTyArgs :: DataCon -> [Type]
- checkDataConTyVars :: DataCon -> Bool
- dataConUserTyVarsNeedWrapper :: DataCon -> Bool
- splitDataProductType_maybe :: Type -> Maybe (TyCon, [Type], DataCon, [Scaled Type])
- data FamInstMatch = FamInstMatch {
  - fim_instance :: FamInst
  - fim_tys :: [Type]
  - fim_cos :: [Coercion]
  }
- data InjectivityCheckResult
  - = InjectivityAccepted
  - | InjectivityUnified CoAxBranch CoAxBranch
- data FamInstEnv
- type FamInstEnvs = (FamInstEnv, FamInstEnv)
- data FamFlavor
  - = SynFamilyInst
  - | DataFamilyInst TyCon
- data FamInst = FamInst {
  - fi_axiom :: CoAxiom Unbranched
  - fi_flavor :: FamFlavor
  - fi_fam :: Name
  - fi_tcs :: [RoughMatchTc]
  - fi_tvs :: [TyVar]
  - fi_cvs :: [CoVar]
  - fi_tys :: [Type]
  - fi_rhs :: Type
  - fi_orphan :: IsOrphan
  }
- famInstAxiom :: FamInst -> CoAxiom Unbranched
- famInstRHS :: FamInst -> Type
- famInstTyCon :: FamInst -> TyCon
- famInstsRepTyCons :: [FamInst] -> [TyCon]
- famInstRepTyCon_maybe :: FamInst -> Maybe TyCon
- dataFamInstRepTyCon :: FamInst -> TyCon
- orphNamesOfFamInst :: FamInst -> NameSet
- pprFamInsts :: [FamInst] -> SDoc
- mkLocalFamInst :: FamFlavor -> CoAxiom Unbranched -> [TyVar] -> [CoVar] -> [Type] -> Type -> FamInst
- mkImportedFamInst :: Name -> [RoughMatchTc] -> CoAxiom Unbranched -> IsOrphan -> FamInst
- famInstEnvSize :: FamInstEnv -> Int
- emptyFamInstEnvs :: (FamInstEnv, FamInstEnv)
- emptyFamInstEnv :: FamInstEnv
- famInstEnvElts :: FamInstEnv -> [FamInst]
- familyInstances :: (FamInstEnv, FamInstEnv) -> TyCon -> [FamInst]
- familyNameInstances :: (FamInstEnv, FamInstEnv) -> Name -> [FamInst]
- unionFamInstEnv :: FamInstEnv -> FamInstEnv -> FamInstEnv
- extendFamInstEnvList :: FamInstEnv -> [FamInst] -> FamInstEnv
- extendFamInstEnv :: FamInstEnv -> FamInst -> FamInstEnv
- compatibleBranches :: CoAxBranch -> CoAxBranch -> Bool
- injectiveBranches :: [Bool] -> CoAxBranch -> CoAxBranch -> InjectivityCheckResult
- mkCoAxBranch :: [TyVar] -> [TyVar] -> [CoVar] -> [Type] -> Type -> [Role] -> SrcSpan -> CoAxBranch
- mkBranchedCoAxiom :: Name -> TyCon -> [CoAxBranch] -> CoAxiom Branched
- mkUnbranchedCoAxiom :: Name -> TyCon -> CoAxBranch -> CoAxiom Unbranched
- mkSingleCoAxiom :: Role -> Name -> [TyVar] -> [TyVar] -> [CoVar] -> TyCon -> [Type] -> Type -> CoAxiom Unbranched
- mkNewTypeCoAxiom :: Name -> TyCon -> [TyVar] -> [Role] -> Type -> CoAxiom Unbranched
- lookupFamInstEnvByTyCon :: FamInstEnvs -> TyCon -> [FamInst]
- lookupFamInstEnv :: FamInstEnvs -> TyCon -> [Type] -> [FamInstMatch]
- lookupFamInstEnvConflicts :: FamInstEnvs -> FamInst -> [FamInst]
- lookupFamInstEnvInjectivityConflicts :: [Bool] -> FamInstEnvs -> FamInst -> [CoAxBranch]
- isDominatedBy :: CoAxBranch -> [CoAxBranch] -> Bool
- reduceTyFamApp_maybe :: FamInstEnvs -> Role -> TyCon -> [Type] -> Maybe Reduction
- apartnessCheck :: [Type] -> CoAxBranch -> Bool
- topNormaliseType :: FamInstEnvs -> Type -> Type
- topNormaliseType_maybe :: FamInstEnvs -> Type -> Maybe Reduction
- topReduceTyFamApp_maybe :: FamInstEnvs -> TyCon -> [Type] -> Maybe HetReduction
- normaliseType :: FamInstEnvs -> Role -> Type -> Reduction
- normaliseTcApp :: FamInstEnvs -> Role -> TyCon -> [Type] -> Reduction
- module GHC.Core.InstEnv
- module GHC.Types.Unique.FM
- module GHC.Core.PatSyn
- module GHC.Core.Predicate
- module GHC.Core.TyCon
- module GHC.Core.TyCo.Ppr
- module GHC.Core.Type
- module GHC.Core.Unify
- module GHC.Core.Utils
- module GHC.HsToCore.Docs
- module GHC.HsToCore.Expr
- module GHC.HsToCore.Monad
- module GHC.Iface.Syntax
- module GHC.Iface.Recomp
- data DerivStrategy pass
  - = StockStrategy (XStockStrategy pass)
  - | AnyclassStrategy (XAnyClassStrategy pass)
  - | NewtypeStrategy (XNewtypeStrategy pass)
  - | ViaStrategy (XViaStrategy pass)
- data InjectivityAnn pass
  - = InjectivityAnn (XCInjectivityAnn pass) (LIdP pass) [LIdP pass]
  - | XInjectivityAnn !(XXInjectivityAnn pass)
- data RuleBndr pass
  - = RuleBndr (XCRuleBndr pass) (LIdP pass)
  - | RuleBndrSig (XRuleBndrSig pass) (LIdP pass) (HsPatSigType pass)
  - | XRuleBndr !(XXRuleBndr pass)
- data WarnDecl pass
  - = Warning (XWarning pass) [LIdP pass] (WarningTxt pass)
  - | XWarnDecl !(XXWarnDecl pass)
- data AnnDecl pass
  - = HsAnnotation (XHsAnnotation pass) (AnnProvenance pass) (XRec pass (HsExpr pass))
  - | XAnnDecl !(XXAnnDecl pass)
- data ForeignExport pass
  - = CExport (XCExport pass) (XRec pass CExportSpec)
  - | XForeignExport !(XXForeignExport pass)
- data ForeignImport pass
  - = CImport (XCImport pass) (XRec pass CCallConv) (XRec pass Safety) (Maybe Header) CImportSpec
  - | XForeignImport !(XXForeignImport pass)
- data SpliceDecl p
  - = SpliceDecl (XSpliceDecl p) (XRec p (HsUntypedSplice p)) SpliceDecoration
  - | XSpliceDecl !(XXSpliceDecl p)
- data StandaloneKindSig pass
  - = StandaloneKindSig (XStandaloneKindSig pass) (LIdP pass) (LHsSigType pass)
  - | XStandaloneKindSig !(XXStandaloneKindSig pass)
- data CImportSpec
  - = CLabel CLabelString
  - | CFunction CCallTarget
  - | CWrapper
- data WarnDecls pass
  - = Warnings {
    - wd_ext :: XWarnings pass
    - wd_warnings :: [LWarnDecl pass]
    }
  - | XWarnDecls !(XXWarnDecls pass)
- data RoleAnnotDecl pass
  - = RoleAnnotDecl (XCRoleAnnotDecl pass) (LIdP pass) [XRec pass (Maybe Role)]
  - | XRoleAnnotDecl !(XXRoleAnnotDecl pass)
- type LRoleAnnotDecl pass = XRec pass (RoleAnnotDecl pass)
- data AnnProvenance pass
  - = ValueAnnProvenance (LIdP pass)
  - | TypeAnnProvenance (LIdP pass)
  - | ModuleAnnProvenance
- type LAnnDecl pass = XRec pass (AnnDecl pass)
- type LWarnDecl pass = XRec pass (WarnDecl pass)
- type LWarnDecls pass = XRec pass (WarnDecls pass)
- data DocDecl pass
  - = DocCommentNext (LHsDoc pass)
  - | DocCommentPrev (LHsDoc pass)
  - | DocCommentNamed String (LHsDoc pass)
  - | DocGroup Int (LHsDoc pass)
- type LDocDecl pass = XRec pass (DocDecl pass)
- type LRuleBndr pass = XRec pass (RuleBndr pass)
- data RuleDecl pass
  - = HsRule {
    - rd_ext :: XHsRule pass
    - rd_name :: XRec pass RuleName
    - rd_act :: Activation
    - rd_tyvs :: Maybe [LHsTyVarBndr () (NoGhcTc pass)]
    - rd_tmvs :: [LRuleBndr pass]
    - rd_lhs :: XRec pass (HsExpr pass)
    - rd_rhs :: XRec pass (HsExpr pass)
    }
  - | XRuleDecl !(XXRuleDecl pass)
- type LRuleDecl pass = XRec pass (RuleDecl pass)
- data RuleDecls pass
  - = HsRules {
    - rds_ext :: XCRuleDecls pass
    - rds_rules :: [LRuleDecl pass]
    }
  - | XRuleDecls !(XXRuleDecls pass)
- type LRuleDecls pass = XRec pass (RuleDecls pass)
- data ForeignDecl pass
  - = ForeignImport {
    - fd_i_ext :: XForeignImport pass
    - fd_name :: LIdP pass
    - fd_sig_ty :: LHsSigType pass
    - fd_fi :: ForeignImport pass
    }
  - | ForeignExport {
    - fd_e_ext :: XForeignExport pass
    - fd_name :: LIdP pass
    - fd_sig_ty :: LHsSigType pass
    - fd_fe :: ForeignExport pass
    }
  - | XForeignDecl !(XXForeignDecl pass)
- type LForeignDecl pass = XRec pass (ForeignDecl pass)
- data DefaultDecl pass
  - = DefaultDecl (XCDefaultDecl pass) [LHsType pass]
  - | XDefaultDecl !(XXDefaultDecl pass)
- type LDefaultDecl pass = XRec pass (DefaultDecl pass)
- type LDerivStrategy pass = XRec pass (DerivStrategy pass)
- data DerivDecl pass
  - = DerivDecl {
    - deriv_ext :: XCDerivDecl pass
    - deriv_type :: LHsSigWcType pass
    - deriv_strategy :: Maybe (LDerivStrategy pass)
    - deriv_overlap_mode :: Maybe (XRec pass OverlapMode)
    }
  - | XDerivDecl !(XXDerivDecl pass)
- type LDerivDecl pass = XRec pass (DerivDecl pass)
- data InstDecl pass
  - = ClsInstD {
    - cid_d_ext :: XClsInstD pass
    - cid_inst :: ClsInstDecl pass
    }
  - | DataFamInstD {
    - dfid_ext :: XDataFamInstD pass
    - dfid_inst :: DataFamInstDecl pass
    }
  - | TyFamInstD {
    - tfid_ext :: XTyFamInstD pass
    - tfid_inst :: TyFamInstDecl pass
    }
  - | XInstDecl !(XXInstDecl pass)
- type LInstDecl pass = XRec pass (InstDecl pass)
- data ClsInstDecl pass
  - = ClsInstDecl {
    - cid_ext :: XCClsInstDecl pass
    - cid_poly_ty :: LHsSigType pass
    - cid_binds :: LHsBinds pass
    - cid_sigs :: [LSig pass]
    - cid_tyfam_insts :: [LTyFamInstDecl pass]
    - cid_datafam_insts :: [LDataFamInstDecl pass]
    - cid_overlap_mode :: Maybe (XRec pass OverlapMode)
    }
  - | XClsInstDecl !(XXClsInstDecl pass)
- type LClsInstDecl pass = XRec pass (ClsInstDecl pass)
- data FamEqn pass rhs
  - = FamEqn {
    - feqn_ext :: XCFamEqn pass rhs
    - feqn_tycon :: LIdP pass
    - feqn_bndrs :: HsOuterFamEqnTyVarBndrs pass
    - feqn_pats :: HsTyPats pass
    - feqn_fixity :: LexicalFixity
    - feqn_rhs :: rhs
    }
  - | XFamEqn !(XXFamEqn pass rhs)
- newtype DataFamInstDecl pass = DataFamInstDecl {
  - dfid_eqn :: FamEqn pass (HsDataDefn pass)
  }
- type LDataFamInstDecl pass = XRec pass (DataFamInstDecl pass)
- data TyFamInstDecl pass
  - = TyFamInstDecl {
    - tfid_xtn :: XCTyFamInstDecl pass
    - tfid_eqn :: TyFamInstEqn pass
    }
  - | XTyFamInstDecl !(XXTyFamInstDecl pass)
- type LTyFamInstDecl pass = XRec pass (TyFamInstDecl pass)
- type LTyFamDefltDecl pass = XRec pass (TyFamDefltDecl pass)
- type TyFamDefltDecl = TyFamInstDecl
- type TyFamInstEqn pass = FamEqn pass (LHsType pass)
- type HsTyPats pass = [LHsTypeArg pass]
- type LTyFamInstEqn pass = XRec pass (TyFamInstEqn pass)
- data HsConDeclGADTDetails pass
  - = PrefixConGADT [HsScaled pass (LBangType pass)]
  - | RecConGADT (XRec pass [LConDeclField pass]) (LHsUniToken "->" "\8594" pass)
- type HsConDeclH98Details pass = HsConDetails Void (HsScaled pass (LBangType pass)) (XRec pass [LConDeclField pass])
- data ConDecl pass
  - = ConDeclGADT {
    - con_g_ext :: XConDeclGADT pass
    - con_names :: NonEmpty (LIdP pass)
    - con_dcolon :: !(LHsUniToken "::" "\8759" pass)
    - con_bndrs :: XRec pass (HsOuterSigTyVarBndrs pass)
    - con_mb_cxt :: Maybe (LHsContext pass)
    - con_g_args :: HsConDeclGADTDetails pass
    - con_res_ty :: LHsType pass
    - con_doc :: Maybe (LHsDoc pass)
    }
  - | ConDeclH98 {
    - con_ext :: XConDeclH98 pass
    - con_name :: LIdP pass
    - con_forall :: Bool
    - con_ex_tvs :: [LHsTyVarBndr Specificity pass]
    - con_mb_cxt :: Maybe (LHsContext pass)
    - con_args :: HsConDeclH98Details pass
    - con_doc :: Maybe (LHsDoc pass)
    }
  - | XConDecl !(XXConDecl pass)
- type LConDecl pass = XRec pass (ConDecl pass)
- data NewOrData
- type LStandaloneKindSig pass = XRec pass (StandaloneKindSig pass)
- data DerivClauseTys pass
  - = DctSingle (XDctSingle pass) (LHsSigType pass)
  - | DctMulti (XDctMulti pass) [LHsSigType pass]
  - | XDerivClauseTys !(XXDerivClauseTys pass)
- type LDerivClauseTys pass = XRec pass (DerivClauseTys pass)
- data HsDerivingClause pass
  - = HsDerivingClause {
    - deriv_clause_ext :: XCHsDerivingClause pass
    - deriv_clause_strategy :: Maybe (LDerivStrategy pass)
    - deriv_clause_tys :: LDerivClauseTys pass
    }
  - | XHsDerivingClause !(XXHsDerivingClause pass)
- type LHsDerivingClause pass = XRec pass (HsDerivingClause pass)
- type HsDeriving pass = [LHsDerivingClause pass]
- data HsDataDefn pass
  - = HsDataDefn {
    - dd_ext :: XCHsDataDefn pass
    - dd_ctxt :: Maybe (LHsContext pass)
    - dd_cType :: Maybe (XRec pass CType)
    - dd_kindSig :: Maybe (LHsKind pass)
    - dd_cons :: DataDefnCons (LConDecl pass)
    - dd_derivs :: HsDeriving pass
    }
  - | XHsDataDefn !(XXHsDataDefn pass)
- data FamilyInfo pass
  - = DataFamily
  - | OpenTypeFamily
  - | ClosedTypeFamily (Maybe [LTyFamInstEqn pass])
- type LInjectivityAnn pass = XRec pass (InjectivityAnn pass)
- data FamilyDecl pass
  - = FamilyDecl {
    - fdExt :: XCFamilyDecl pass
    - fdInfo :: FamilyInfo pass
    - fdTopLevel :: TopLevelFlag
    - fdLName :: LIdP pass
    - fdTyVars :: LHsQTyVars pass
    - fdFixity :: LexicalFixity
    - fdResultSig :: LFamilyResultSig pass
    - fdInjectivityAnn :: Maybe (LInjectivityAnn pass)
    }
  - | XFamilyDecl !(XXFamilyDecl pass)
- type LFamilyDecl pass = XRec pass (FamilyDecl pass)
- data FamilyResultSig pass
  - = NoSig (XNoSig pass)
  - | KindSig (XCKindSig pass) (LHsKind pass)
  - | TyVarSig (XTyVarSig pass) (LHsTyVarBndr () pass)
  - | XFamilyResultSig !(XXFamilyResultSig pass)
- type LFamilyResultSig pass = XRec pass (FamilyResultSig pass)
- data TyClGroup pass
  - = TyClGroup {
    - group_ext :: XCTyClGroup pass
    - group_tyclds :: [LTyClDecl pass]
    - group_roles :: [LRoleAnnotDecl pass]
    - group_kisigs :: [LStandaloneKindSig pass]
    - group_instds :: [LInstDecl pass]
    }
  - | XTyClGroup !(XXTyClGroup pass)
- type LHsFunDep pass = XRec pass (FunDep pass)
- pattern XFunDep :: !(XXFunDep pass) -> FunDep pass
- data TyClDecl pass
  - = FamDecl {
    - tcdFExt :: XFamDecl pass
    - tcdFam :: FamilyDecl pass
    }
  - | SynDecl {
    - tcdSExt :: XSynDecl pass
    - tcdLName :: LIdP pass
    - tcdTyVars :: LHsQTyVars pass
    - tcdFixity :: LexicalFixity
    - tcdRhs :: LHsType pass
    }
  - | DataDecl {
    - tcdDExt :: XDataDecl pass
    - tcdLName :: LIdP pass
    - tcdTyVars :: LHsQTyVars pass
    - tcdFixity :: LexicalFixity
    - tcdDataDefn :: HsDataDefn pass
    }
  - | ClassDecl {
    - tcdCExt :: XClassDecl pass
    - tcdLayout :: !(LayoutInfo pass)
    - tcdCtxt :: Maybe (LHsContext pass)
    - tcdLName :: LIdP pass
    - tcdTyVars :: LHsQTyVars pass
    - tcdFixity :: LexicalFixity
    - tcdFDs :: [LHsFunDep pass]
    - tcdSigs :: [LSig pass]
    - tcdMeths :: LHsBinds pass
    - tcdATs :: [LFamilyDecl pass]
    - tcdATDefs :: [LTyFamDefltDecl pass]
    - tcdDocs :: [LDocDecl pass]
    }
  - | XTyClDecl !(XXTyClDecl pass)
- type LTyClDecl pass = XRec pass (TyClDecl pass)
- data SpliceDecoration
  - = DollarSplice
  - | BareSplice
- type LSpliceDecl pass = XRec pass (SpliceDecl pass)
- data HsGroup p
  - = HsGroup {
    - hs_ext :: XCHsGroup p
    - hs_valds :: HsValBinds p
    - hs_splcds :: [LSpliceDecl p]
    - hs_tyclds :: [TyClGroup p]
    - hs_derivds :: [LDerivDecl p]
    - hs_fixds :: [LFixitySig p]
    - hs_defds :: [LDefaultDecl p]
    - hs_fords :: [LForeignDecl p]
    - hs_warnds :: [LWarnDecls p]
    - hs_annds :: [LAnnDecl p]
    - hs_ruleds :: [LRuleDecls p]
    - hs_docs :: [LDocDecl p]
    }
  - | XHsGroup !(XXHsGroup p)
- data HsDecl p
  - = TyClD (XTyClD p) (TyClDecl p)
  - | InstD (XInstD p) (InstDecl p)
  - | DerivD (XDerivD p) (DerivDecl p)
  - | ValD (XValD p) (HsBind p)
  - | SigD (XSigD p) (Sig p)
  - | KindSigD (XKindSigD p) (StandaloneKindSig p)
  - | DefD (XDefD p) (DefaultDecl p)
  - | ForD (XForD p) (ForeignDecl p)
  - | WarningD (XWarningD p) (WarnDecls p)
  - | AnnD (XAnnD p) (AnnDecl p)
  - | RuleD (XRuleD p) (RuleDecls p)
  - | SpliceD (XSpliceD p) (SpliceDecl p)
  - | DocD (XDocD p) (DocDecl p)
  - | RoleAnnotD (XRoleAnnotD p) (RoleAnnotDecl p)
  - | XHsDecl !(XXHsDecl p)
- type LHsDecl p = XRec p (HsDecl p)
- hsGroupInstDecls :: HsGroup id -> [LInstDecl id]
- isDataDecl :: TyClDecl pass -> Bool
- isSynDecl :: TyClDecl pass -> Bool
- isClassDecl :: TyClDecl pass -> Bool
- isFamilyDecl :: TyClDecl pass -> Bool
- isTypeFamilyDecl :: TyClDecl pass -> Bool
- isOpenTypeFamilyInfo :: FamilyInfo pass -> Bool
- isClosedTypeFamilyInfo :: FamilyInfo pass -> Bool
- isDataFamilyDecl :: TyClDecl pass -> Bool
- tyClDeclTyVars :: TyClDecl pass -> LHsQTyVars pass
- tyClGroupTyClDecls :: [TyClGroup pass] -> [LTyClDecl pass]
- tyClGroupInstDecls :: [TyClGroup pass] -> [LInstDecl pass]
- tyClGroupRoleDecls :: [TyClGroup pass] -> [LRoleAnnotDecl pass]
- tyClGroupKindSigs :: [TyClGroup pass] -> [LStandaloneKindSig pass]
- collectRuleBndrSigTys :: [RuleBndr pass] -> [HsPatSigType pass]
- docDeclDoc :: DocDecl pass -> LHsDoc pass
- annProvenanceName_maybe :: UnXRec p => AnnProvenance p -> Maybe (IdP p)
- data HsRuleAnn = HsRuleAnn {
  - ra_tyanns :: Maybe (AddEpAnn, AddEpAnn)
  - ra_tmanns :: Maybe (AddEpAnn, AddEpAnn)
  - ra_rest :: [AddEpAnn]
  }
- data HsRuleRn = HsRuleRn NameSet NameSet
- data XViaStrategyPs = XViaStrategyPs (EpAnn [AddEpAnn]) (LHsSigType GhcPs)
- data DataDeclRn = DataDeclRn {
  - tcdDataCusk :: Bool
  - tcdFVs :: NameSet
  }
- partitionBindsAndSigs :: [LHsDecl GhcPs] -> (LHsBinds GhcPs, [LSig GhcPs], [LFamilyDecl GhcPs], [LTyFamInstDecl GhcPs], [LDataFamInstDecl GhcPs], [LDocDecl GhcPs])
- emptyRdrGroup :: forall (p :: Pass). HsGroup (GhcPass p)
- emptyRnGroup :: forall (p :: Pass). HsGroup (GhcPass p)
- hsGroupTopLevelFixitySigs :: forall (p :: Pass). HsGroup (GhcPass p) -> [LFixitySig (GhcPass p)]
- appendGroups :: forall (p :: Pass). HsGroup (GhcPass p) -> HsGroup (GhcPass p) -> HsGroup (GhcPass p)
- tyFamInstDeclName :: forall (p :: Pass). Anno (IdGhcP p) ~ SrcSpanAnnN => TyFamInstDecl (GhcPass p) -> IdP (GhcPass p)
- tyFamInstDeclLName :: forall (p :: Pass). Anno (IdGhcP p) ~ SrcSpanAnnN => TyFamInstDecl (GhcPass p) -> LocatedN (IdP (GhcPass p))
- tyClDeclLName :: forall (p :: Pass). Anno (IdGhcP p) ~ SrcSpanAnnN => TyClDecl (GhcPass p) -> LocatedN (IdP (GhcPass p))
- countTyClDecls :: [TyClDecl pass] -> (Int, Int, Int, Int, Int)
- tcdName :: forall (p :: Pass). Anno (IdGhcP p) ~ SrcSpanAnnN => TyClDecl (GhcPass p) -> IdP (GhcPass p)
- hsDeclHasCusk :: TyClDecl GhcRn -> Bool
- pp_vanilla_decl_head :: forall (p :: Pass). OutputableBndrId p => XRec (GhcPass p) (IdP (GhcPass p)) -> LHsQTyVars (GhcPass p) -> LexicalFixity -> Maybe (LHsContext (GhcPass p)) -> SDoc
- pprTyClDeclFlavour :: forall (p :: Pass). TyClDecl (GhcPass p) -> SDoc
- familyDeclLName :: forall (p :: Pass). FamilyDecl (GhcPass p) -> XRec (GhcPass p) (IdP (GhcPass p))
- familyDeclName :: forall (p :: Pass). FamilyDecl (GhcPass p) -> IdP (GhcPass p)
- famResultKindSignature :: forall (p :: Pass). FamilyResultSig (GhcPass p) -> Maybe (LHsKind (GhcPass p))
- resultVariableName :: forall (a :: Pass). FamilyResultSig (GhcPass a) -> Maybe (IdP (GhcPass a))
- derivStrategyName :: DerivStrategy a -> SDoc
- standaloneKindSigName :: forall (p :: Pass). StandaloneKindSig (GhcPass p) -> IdP (GhcPass p)
- getConNames :: ConDecl GhcRn -> [LocatedN Name]
- getRecConArgs_maybe :: ConDecl GhcRn -> Maybe (LocatedL [LConDeclField GhcRn])
- hsConDeclTheta :: forall (p :: Pass). Maybe (LHsContext (GhcPass p)) -> [LHsType (GhcPass p)]
- ppDataDefnHeader :: forall (p :: Pass). OutputableBndrId p => (Maybe (LHsContext (GhcPass p)) -> SDoc) -> HsDataDefn (GhcPass p) -> SDoc
- pprTyFamInstDecl :: forall (p :: Pass). OutputableBndrId p => TopLevelFlag -> TyFamInstDecl (GhcPass p) -> SDoc
- pprDataFamInstFlavour :: forall (p :: Pass). DataFamInstDecl (GhcPass p) -> SDoc
- pprHsFamInstLHS :: forall (p :: Pass). OutputableBndrId p => IdP (GhcPass p) -> HsOuterFamEqnTyVarBndrs (GhcPass p) -> HsTyPats (GhcPass p) -> LexicalFixity -> Maybe (LHsContext (GhcPass p)) -> SDoc
- instDeclDataFamInsts :: forall (p :: Pass). [LInstDecl (GhcPass p)] -> [DataFamInstDecl (GhcPass p)]
- newOrDataToFlavour :: NewOrData -> TyConFlavour tc
- anyLConIsGadt :: Foldable f => f (GenLocated l (ConDecl pass)) -> Bool
- foldDerivStrategy :: forall p (pass :: Pass) r. p ~ GhcPass pass => r -> (XViaStrategy p -> r) -> DerivStrategy p -> r
- mapDerivStrategy :: forall p (pass :: Pass). p ~ GhcPass pass => (XViaStrategy p -> XViaStrategy p) -> DerivStrategy p -> DerivStrategy p
- flattenRuleDecls :: forall (p :: Pass). [LRuleDecls (GhcPass p)] -> [LRuleDecl (GhcPass p)]
- pprFullRuleName :: SourceText -> GenLocated a RuleName -> SDoc
- roleAnnotDeclName :: forall (p :: Pass). RoleAnnotDecl (GhcPass p) -> IdP (GhcPass p)
- module GHC.Hs.Expr
- module GHC.Hs.Doc
- module GHC.Hs.Extension
- module GHC.Hs.ImpExp
- module GHC.Hs.Pat
- module GHC.Hs.Type
- mkHsAppTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p)
- mkHsAppKindTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsToken "@" (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p)
- data LConsWithFields (p :: Pass) = LConsWithFields {
  - consWithFieldIndices :: [(LocatedA (IdP (GhcPass p)), Maybe [Located Int])]
  - consFields :: IntMap (LFieldOcc (GhcPass p))
  }
- data TyDeclBinders (p :: Pass) = TyDeclBinders {
  - tyDeclMainBinder :: !(LocatedA (IdP (GhcPass p)), TyConFlavour ())
  - tyDeclATs :: ![(LocatedA (IdP (GhcPass p)), TyConFlavour ())]
  - tyDeclOpSigs :: ![LocatedA (IdP (GhcPass p))]
  - tyDeclConsWithFields :: !(LConsWithFields p)
  }
- class UnXRec p => CollectPass p where
  - collectXXPat :: CollectFlag p -> XXPat p -> [IdP p] -> [IdP p]
  - collectXXHsBindsLR :: XXHsBindsLR p pR -> [IdP p] -> [IdP p]
  - collectXSplicePat :: CollectFlag p -> XSplicePat p -> [IdP p] -> [IdP p]
- data CollectFlag p where
  - CollNoDictBinders :: forall p. CollectFlag p
  - CollWithDictBinders :: CollectFlag (GhcPass 'Typechecked)
- mkHsPar :: forall (id :: Pass). LHsExpr (GhcPass id) -> LHsExpr (GhcPass id)
- mkSimpleMatch :: forall (p :: Pass) body. (Anno (Match (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcSpanAnnA, Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcAnn NoEpAnns) => HsMatchContext (GhcPass p) -> [LPat (GhcPass p)] -> LocatedA (body (GhcPass p)) -> LMatch (GhcPass p) (LocatedA (body (GhcPass p)))
- unguardedGRHSs :: forall (p :: Pass) body. Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcAnn NoEpAnns => SrcSpan -> LocatedA (body (GhcPass p)) -> EpAnn GrhsAnn -> GRHSs (GhcPass p) (LocatedA (body (GhcPass p)))
- unguardedRHS :: forall (p :: Pass) body. Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcAnn NoEpAnns => EpAnn GrhsAnn -> SrcSpan -> LocatedA (body (GhcPass p)) -> [LGRHS (GhcPass p) (LocatedA (body (GhcPass p)))]
- mkMatchGroup :: forall (p :: Pass) body. AnnoBody p body => Origin -> LocatedL [LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p))))] -> MatchGroup (GhcPass p) (LocatedA (body (GhcPass p)))
- mkLamCaseMatchGroup :: forall (p :: Pass) body. AnnoBody p body => Origin -> LamCaseVariant -> LocatedL [LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p))))] -> MatchGroup (GhcPass p) (LocatedA (body (GhcPass p)))
- mkLocatedList :: Semigroup a => [GenLocated (SrcAnn a) e2] -> LocatedAn an [GenLocated (SrcAnn a) e2]
- mkHsApp :: forall (id :: Pass). LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id)
- mkHsAppWith :: forall (id :: Pass). (LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> HsExpr (GhcPass id) -> LHsExpr (GhcPass id)) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id)
- mkHsApps :: forall (id :: Pass). LHsExpr (GhcPass id) -> [LHsExpr (GhcPass id)] -> LHsExpr (GhcPass id)
- mkHsAppsWith :: forall (id :: Pass). (LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> HsExpr (GhcPass id) -> LHsExpr (GhcPass id)) -> LHsExpr (GhcPass id) -> [LHsExpr (GhcPass id)] -> LHsExpr (GhcPass id)
- mkHsAppType :: LHsExpr GhcRn -> LHsWcType GhcRn -> LHsExpr GhcRn
- mkHsAppTypes :: LHsExpr GhcRn -> [LHsWcType GhcRn] -> LHsExpr GhcRn
- mkHsLam :: forall (p :: Pass). (IsPass p, XMG (GhcPass p) (LHsExpr (GhcPass p)) ~ Origin) => [LPat (GhcPass p)] -> LHsExpr (GhcPass p) -> LHsExpr (GhcPass p)
- mkHsLams :: [TyVar] -> [EvVar] -> LHsExpr GhcTc -> LHsExpr GhcTc
- mkHsCaseAlt :: forall (p :: Pass) body. (Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcAnn NoEpAnns, Anno (Match (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcSpanAnnA) => LPat (GhcPass p) -> LocatedA (body (GhcPass p)) -> LMatch (GhcPass p) (LocatedA (body (GhcPass p)))
- nlHsTyApp :: Id -> [Type] -> LHsExpr GhcTc
- nlHsTyApps :: Id -> [Type] -> [LHsExpr GhcTc] -> LHsExpr GhcTc
- mkLHsPar :: forall (id :: Pass). IsPass id => LHsExpr (GhcPass id) -> LHsExpr (GhcPass id)
- mkParPat :: forall (p :: Pass). IsPass p => LPat (GhcPass p) -> LPat (GhcPass p)
- nlParPat :: forall (name :: Pass). LPat (GhcPass name) -> LPat (GhcPass name)
- mkRecStmt :: forall (idL :: Pass) bodyR. Anno [GenLocated (Anno (StmtLR (GhcPass idL) GhcPs bodyR)) (StmtLR (GhcPass idL) GhcPs bodyR)] ~ SrcSpanAnnL => EpAnn AnnList -> LocatedL [LStmtLR (GhcPass idL) GhcPs bodyR] -> StmtLR (GhcPass idL) GhcPs bodyR
- mkHsIntegral :: IntegralLit -> HsOverLit GhcPs
- mkHsFractional :: FractionalLit -> HsOverLit GhcPs
- mkHsIsString :: SourceText -> FastString -> HsOverLit GhcPs
- mkHsDo :: HsDoFlavour -> LocatedL [ExprLStmt GhcPs] -> HsExpr GhcPs
- mkHsDoAnns :: HsDoFlavour -> LocatedL [ExprLStmt GhcPs] -> EpAnn AnnList -> HsExpr GhcPs
- mkHsComp :: HsDoFlavour -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> HsExpr GhcPs
- mkHsCompAnns :: HsDoFlavour -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> EpAnn AnnList -> HsExpr GhcPs
- mkHsIf :: LHsExpr GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs -> EpAnn AnnsIf -> HsExpr GhcPs
- mkHsCmdIf :: LHsExpr GhcPs -> LHsCmd GhcPs -> LHsCmd GhcPs -> EpAnn AnnsIf -> HsCmd GhcPs
- mkNPat :: LocatedAn NoEpAnns (HsOverLit GhcPs) -> Maybe (SyntaxExpr GhcPs) -> EpAnn [AddEpAnn] -> Pat GhcPs
- mkNPlusKPat :: LocatedN RdrName -> LocatedAn NoEpAnns (HsOverLit GhcPs) -> EpAnn EpaLocation -> Pat GhcPs
- emptyTransStmt :: EpAnn [AddEpAnn] -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
- mkTransformStmt :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
- mkTransformByStmt :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> LHsExpr GhcPs -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
- mkGroupUsingStmt :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
- mkGroupByUsingStmt :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> LHsExpr GhcPs -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
- mkLastStmt :: forall (idR :: Pass) bodyR (idL :: Pass). IsPass idR => LocatedA (bodyR (GhcPass idR)) -> StmtLR (GhcPass idL) (GhcPass idR) (LocatedA (bodyR (GhcPass idR)))
- mkBodyStmt :: forall bodyR (idL :: Pass). LocatedA (bodyR GhcPs) -> StmtLR (GhcPass idL) GhcPs (LocatedA (bodyR GhcPs))
- mkPsBindStmt :: EpAnn [AddEpAnn] -> LPat GhcPs -> LocatedA (bodyR GhcPs) -> StmtLR GhcPs GhcPs (LocatedA (bodyR GhcPs))
- mkRnBindStmt :: LPat GhcRn -> LocatedA (bodyR GhcRn) -> StmtLR GhcRn GhcRn (LocatedA (bodyR GhcRn))
- mkTcBindStmt :: LPat GhcTc -> LocatedA (bodyR GhcTc) -> StmtLR GhcTc GhcTc (LocatedA (bodyR GhcTc))
- unitRecStmtTc :: RecStmtTc
- emptyRecStmt :: forall (idL :: Pass) bodyR. Anno [GenLocated (Anno (StmtLR (GhcPass idL) GhcPs bodyR)) (StmtLR (GhcPass idL) GhcPs bodyR)] ~ SrcSpanAnnL => StmtLR (GhcPass idL) GhcPs bodyR
- emptyRecStmtName :: Anno [GenLocated (Anno (StmtLR GhcRn GhcRn bodyR)) (StmtLR GhcRn GhcRn bodyR)] ~ SrcSpanAnnL => StmtLR GhcRn GhcRn bodyR
- emptyRecStmtId :: Stmt GhcTc (LocatedA (HsCmd GhcTc))
- mkLetStmt :: EpAnn [AddEpAnn] -> HsLocalBinds GhcPs -> StmtLR GhcPs GhcPs (LocatedA b)
- mkHsOpApp :: LHsExpr GhcPs -> IdP GhcPs -> LHsExpr GhcPs -> HsExpr GhcPs
- mkHsString :: forall (p :: Pass). String -> HsLit (GhcPass p)
- mkHsStringFS :: forall (p :: Pass). FastString -> HsLit (GhcPass p)
- mkHsStringPrimLit :: forall (p :: Pass). FastString -> HsLit (GhcPass p)
- mkHsCharPrimLit :: forall (p :: Pass). Char -> HsLit (GhcPass p)
- mkConLikeTc :: ConLike -> HsExpr GhcTc
- nlHsVar :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> LHsExpr (GhcPass p)
- nl_HsVar :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> HsExpr (GhcPass p)
- nlHsDataCon :: DataCon -> LHsExpr GhcTc
- nlHsLit :: forall (p :: Pass). HsLit (GhcPass p) -> LHsExpr (GhcPass p)
- nlHsIntLit :: forall (p :: Pass). Integer -> LHsExpr (GhcPass p)
- nlVarPat :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> LPat (GhcPass p)
- nlLitPat :: HsLit GhcPs -> LPat GhcPs
- nlHsApp :: forall (id :: Pass). IsPass id => LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id)
- nlHsSyntaxApps :: SyntaxExprTc -> [LHsExpr GhcTc] -> LHsExpr GhcTc
- nlHsApps :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> [LHsExpr (GhcPass p)] -> LHsExpr (GhcPass p)
- nlHsVarApps :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> [IdP (GhcPass p)] -> LHsExpr (GhcPass p)
- nlConVarPat :: RdrName -> [RdrName] -> LPat GhcPs
- nlConVarPatName :: Name -> [Name] -> LPat GhcRn
- nlInfixConPat :: RdrName -> LPat GhcPs -> LPat GhcPs -> LPat GhcPs
- nlConPat :: RdrName -> [LPat GhcPs] -> LPat GhcPs
- nlConPatName :: Name -> [LPat GhcRn] -> LPat GhcRn
- nlNullaryConPat :: RdrName -> LPat GhcPs
- nlWildConPat :: DataCon -> LPat GhcPs
- nlWildPat :: LPat GhcPs
- nlWildPatName :: LPat GhcRn
- nlHsDo :: HsDoFlavour -> [LStmt GhcPs (LHsExpr GhcPs)] -> LHsExpr GhcPs
- nlHsOpApp :: LHsExpr GhcPs -> IdP GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs
- nlHsLam :: LMatch GhcPs (LHsExpr GhcPs) -> LHsExpr GhcPs
- nlHsPar :: forall (id :: Pass). LHsExpr (GhcPass id) -> LHsExpr (GhcPass id)
- nlHsIf :: LHsExpr GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs
- nlHsCase :: LHsExpr GhcPs -> [LMatch GhcPs (LHsExpr GhcPs)] -> LHsExpr GhcPs
- nlList :: [LHsExpr GhcPs] -> LHsExpr GhcPs
- nlHsAppTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p)
- nlHsTyVar :: forall (p :: Pass) a. IsSrcSpanAnn p a => PromotionFlag -> IdP (GhcPass p) -> LHsType (GhcPass p)
- nlHsFunTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p)
- nlHsParTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p)
- nlHsTyConApp :: forall (p :: Pass) a. IsSrcSpanAnn p a => PromotionFlag -> LexicalFixity -> IdP (GhcPass p) -> [LHsTypeArg (GhcPass p)] -> LHsType (GhcPass p)
- nlHsAppKindTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsKind (GhcPass p) -> LHsType (GhcPass p)
- mkLHsTupleExpr :: forall (p :: Pass). [LHsExpr (GhcPass p)] -> XExplicitTuple (GhcPass p) -> LHsExpr (GhcPass p)
- mkLHsVarTuple :: forall (p :: Pass) a. IsSrcSpanAnn p a => [IdP (GhcPass p)] -> XExplicitTuple (GhcPass p) -> LHsExpr (GhcPass p)
- nlTuplePat :: [LPat GhcPs] -> Boxity -> LPat GhcPs
- missingTupArg :: EpAnn EpaLocation -> HsTupArg GhcPs
- mkBigLHsVarTup :: forall (p :: Pass) a. IsSrcSpanAnn p a => [IdP (GhcPass p)] -> XExplicitTuple (GhcPass p) -> LHsExpr (GhcPass p)
- mkBigLHsTup :: forall (id :: Pass). [LHsExpr (GhcPass id)] -> XExplicitTuple (GhcPass id) -> LHsExpr (GhcPass id)
- mkBigLHsVarPatTup :: [IdP GhcRn] -> LPat GhcRn
- mkBigLHsPatTup :: [LPat GhcRn] -> LPat GhcRn
- hsTypeToHsSigType :: LHsType GhcPs -> LHsSigType GhcPs
- hsTypeToHsSigWcType :: LHsType GhcPs -> LHsSigWcType GhcPs
- mkHsSigEnv :: (LSig GhcRn -> Maybe ([LocatedN Name], a)) -> [LSig GhcRn] -> NameEnv a
- mkClassOpSigs :: [LSig GhcPs] -> [LSig GhcPs]
- mkLHsWrap :: HsWrapper -> LHsExpr GhcTc -> LHsExpr GhcTc
- mkHsWrap :: HsWrapper -> HsExpr GhcTc -> HsExpr GhcTc
- mkHsWrapCo :: TcCoercionN -> HsExpr GhcTc -> HsExpr GhcTc
- mkHsWrapCoR :: TcCoercionR -> HsExpr GhcTc -> HsExpr GhcTc
- mkLHsWrapCo :: TcCoercionN -> LHsExpr GhcTc -> LHsExpr GhcTc
- mkHsCmdWrap :: HsWrapper -> HsCmd GhcTc -> HsCmd GhcTc
- mkLHsCmdWrap :: HsWrapper -> LHsCmd GhcTc -> LHsCmd GhcTc
- mkHsWrapPat :: HsWrapper -> Pat GhcTc -> Type -> Pat GhcTc
- mkHsWrapPatCo :: TcCoercionN -> Pat GhcTc -> Type -> Pat GhcTc
- mkHsDictLet :: TcEvBinds -> LHsExpr GhcTc -> LHsExpr GhcTc
- mkFunBind :: Origin -> LocatedN RdrName -> [LMatch GhcPs (LHsExpr GhcPs)] -> HsBind GhcPs
- mkTopFunBind :: Origin -> LocatedN Name -> [LMatch GhcRn (LHsExpr GhcRn)] -> HsBind GhcRn
- mkHsVarBind :: SrcSpan -> RdrName -> LHsExpr GhcPs -> LHsBind GhcPs
- mkVarBind :: IdP GhcTc -> LHsExpr GhcTc -> LHsBind GhcTc
- mkPatSynBind :: LocatedN RdrName -> HsPatSynDetails GhcPs -> LPat GhcPs -> HsPatSynDir GhcPs -> EpAnn [AddEpAnn] -> HsBind GhcPs
- isInfixFunBind :: forall id1 id2. UnXRec id2 => HsBindLR id1 id2 -> Bool
- spanHsLocaLBinds :: forall (p :: Pass). HsLocalBinds (GhcPass p) -> SrcSpan
- mkSimpleGeneratedFunBind :: SrcSpan -> RdrName -> [LPat GhcPs] -> LHsExpr GhcPs -> LHsBind GhcPs
- mkPrefixFunRhs :: LIdP (NoGhcTc p) -> HsMatchContext p
- mkMatch :: forall (p :: Pass). IsPass p => HsMatchContext (GhcPass p) -> [LPat (GhcPass p)] -> LHsExpr (GhcPass p) -> HsLocalBinds (GhcPass p) -> LMatch (GhcPass p) (LHsExpr (GhcPass p))
- isUnliftedHsBind :: HsBind GhcTc -> Bool
- isUnliftedHsBinds :: LHsBinds GhcTc -> Bool
- isBangedHsBind :: HsBind GhcTc -> Bool
- collectLocalBinders :: forall (idL :: Pass) (idR :: Pass). CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> HsLocalBindsLR (GhcPass idL) (GhcPass idR) -> [IdP (GhcPass idL)]
- collectHsIdBinders :: forall (idL :: Pass) (idR :: Pass). CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> HsValBindsLR (GhcPass idL) (GhcPass idR) -> [IdP (GhcPass idL)]
- collectHsValBinders :: forall (idL :: Pass) idR. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> HsValBindsLR (GhcPass idL) idR -> [IdP (GhcPass idL)]
- collectHsBindBinders :: CollectPass p => CollectFlag p -> HsBindLR p idR -> [IdP p]
- collectHsBindListBinders :: CollectPass p => CollectFlag p -> [LHsBindLR p idR] -> [IdP p]
- collectMethodBinders :: UnXRec idL => LHsBindsLR idL idR -> [LIdP idL]
- collectLStmtsBinders :: forall (idL :: Pass) (idR :: Pass) body. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> [LStmtLR (GhcPass idL) (GhcPass idR) body] -> [IdP (GhcPass idL)]
- collectStmtsBinders :: forall (idL :: Pass) (idR :: Pass) body. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> [StmtLR (GhcPass idL) (GhcPass idR) body] -> [IdP (GhcPass idL)]
- collectLStmtBinders :: forall (idL :: Pass) (idR :: Pass) body. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> LStmtLR (GhcPass idL) (GhcPass idR) body -> [IdP (GhcPass idL)]
- collectStmtBinders :: forall (idL :: Pass) (idR :: Pass) body. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> StmtLR (GhcPass idL) (GhcPass idR) body -> [IdP (GhcPass idL)]
- collectPatBinders :: CollectPass p => CollectFlag p -> LPat p -> [IdP p]
- collectPatsBinders :: CollectPass p => CollectFlag p -> [LPat p] -> [IdP p]
- hsGroupBinders :: HsGroup GhcRn -> [Name]
- hsTyClForeignBinders :: [TyClGroup GhcRn] -> [LForeignDecl GhcRn] -> [Name]
- hsLTyClDeclBinders :: forall (p :: Pass). (IsPass p, OutputableBndrId p) => LocatedA (TyClDecl (GhcPass p)) -> TyDeclBinders p
- hsForeignDeclsBinders :: forall (p :: Pass) a. (UnXRec (GhcPass p), IsSrcSpanAnn p a) => [LForeignDecl (GhcPass p)] -> [LIdP (GhcPass p)]
- hsPatSynSelectors :: forall (p :: Pass). IsPass p => HsValBinds (GhcPass p) -> [FieldOcc (GhcPass p)]
- getPatSynBinds :: UnXRec id => [(RecFlag, LHsBinds id)] -> [PatSynBind id id]
- hsDataFamInstBinders :: forall (p :: Pass). (IsPass p, OutputableBndrId p) => DataFamInstDecl (GhcPass p) -> LConsWithFields p
- lStmtsImplicits :: forall (idR :: Pass) (body :: Type -> Type). [LStmtLR GhcRn (GhcPass idR) (LocatedA (body (GhcPass idR)))] -> [(SrcSpan, [Name])]
- hsValBindsImplicits :: forall (idR :: Pass). HsValBindsLR GhcRn (GhcPass idR) -> [(SrcSpan, [Name])]
- lPatImplicits :: LPat GhcRn -> [(SrcSpan, [Name])]
- data DerivStrategy pass
  - = StockStrategy (XStockStrategy pass)
  - | AnyclassStrategy (XAnyClassStrategy pass)
  - | NewtypeStrategy (XNewtypeStrategy pass)
  - | ViaStrategy (XViaStrategy pass)
- data InjectivityAnn pass
  - = InjectivityAnn (XCInjectivityAnn pass) (LIdP pass) [LIdP pass]
  - | XInjectivityAnn !(XXInjectivityAnn pass)
- data RuleBndr pass
  - = RuleBndr (XCRuleBndr pass) (LIdP pass)
  - | RuleBndrSig (XRuleBndrSig pass) (LIdP pass) (HsPatSigType pass)
  - | XRuleBndr !(XXRuleBndr pass)
- type BangType pass = HsType pass
- type Stmt id body = StmtLR id id body
- data Match p body
  - = Match {
    - m_ext :: XCMatch p body
    - m_ctxt :: HsMatchContext p
    - m_pats :: [LPat p]
    - m_grhss :: GRHSs p body
    }
  - | XMatch !(XXMatch p body)
- data Pat p
  - = WildPat (XWildPat p)
  - | VarPat (XVarPat p) (LIdP p)
  - | LazyPat (XLazyPat p) (LPat p)
  - | AsPat (XAsPat p) (LIdP p) !(LHsToken "@" p) (LPat p)
  - | ParPat (XParPat p) !(LHsToken "(" p) (LPat p) !(LHsToken ")" p)
  - | BangPat (XBangPat p) (LPat p)
  - | ListPat (XListPat p) [LPat p]
  - | TuplePat (XTuplePat p) [LPat p] Boxity
  - | SumPat (XSumPat p) (LPat p) ConTag SumWidth
  - | ConPat {
    - pat_con_ext :: XConPat p
    - pat_con :: XRec p (ConLikeP p)
    - pat_args :: HsConPatDetails p
    }
  - | ViewPat (XViewPat p) (LHsExpr p) (LPat p)
  - | SplicePat (XSplicePat p) (HsUntypedSplice p)
  - | LitPat (XLitPat p) (HsLit p)
  - | NPat (XNPat p) (XRec p (HsOverLit p)) (Maybe (SyntaxExpr p)) (SyntaxExpr p)
  - | NPlusKPat (XNPlusKPat p) (LIdP p) (XRec p (HsOverLit p)) (HsOverLit p) (SyntaxExpr p) (SyntaxExpr p)
  - | SigPat (XSigPat p) (LPat p) (HsPatSigType (NoGhcTc p))
  - | XPat !(XXPat p)
- data NewOrData
  - = NewType
  - | DataType
- data WarnDecl pass
  - = Warning (XWarning pass) [LIdP pass] (WarningTxt pass)
  - | XWarnDecl !(XXWarnDecl pass)
- data AnnDecl pass
  - = HsAnnotation (XHsAnnotation pass) (AnnProvenance pass) (XRec pass (HsExpr pass))
  - | XAnnDecl !(XXAnnDecl pass)
- data IE pass
  - = IEVar (XIEVar pass) (LIEWrappedName pass)
  - | IEThingAbs (XIEThingAbs pass) (LIEWrappedName pass)
  - | IEThingAll (XIEThingAll pass) (LIEWrappedName pass)
  - | IEThingWith (XIEThingWith pass) (LIEWrappedName pass) IEWildcard [LIEWrappedName pass]
  - | IEModuleContents (XIEModuleContents pass) (XRec pass ModuleName)
  - | IEGroup (XIEGroup pass) Int (LHsDoc pass)
  - | IEDoc (XIEDoc pass) (LHsDoc pass)
  - | IEDocNamed (XIEDocNamed pass) String
  - | XIE !(XXIE pass)
- data HsExpr p
  - = HsVar (XVar p) (LIdP p)
  - | HsUnboundVar (XUnboundVar p) RdrName
  - | HsRecSel (XRecSel p) (FieldOcc p)
  - | HsOverLabel (XOverLabel p) SourceText FastString
  - | HsIPVar (XIPVar p) HsIPName
  - | HsOverLit (XOverLitE p) (HsOverLit p)
  - | HsLit (XLitE p) (HsLit p)
  - | HsLam (XLam p) (MatchGroup p (LHsExpr p))
  - | HsLamCase (XLamCase p) LamCaseVariant (MatchGroup p (LHsExpr p))
  - | HsApp (XApp p) (LHsExpr p) (LHsExpr p)
  - | HsAppType (XAppTypeE p) (LHsExpr p) !(LHsToken "@" p) (LHsWcType (NoGhcTc p))
  - | OpApp (XOpApp p) (LHsExpr p) (LHsExpr p) (LHsExpr p)
  - | NegApp (XNegApp p) (LHsExpr p) (SyntaxExpr p)
  - | HsPar (XPar p) !(LHsToken "(" p) (LHsExpr p) !(LHsToken ")" p)
  - | SectionL (XSectionL p) (LHsExpr p) (LHsExpr p)
  - | SectionR (XSectionR p) (LHsExpr p) (LHsExpr p)
  - | ExplicitTuple (XExplicitTuple p) [HsTupArg p] Boxity
  - | ExplicitSum (XExplicitSum p) ConTag SumWidth (LHsExpr p)
  - | HsCase (XCase p) (LHsExpr p) (MatchGroup p (LHsExpr p))
  - | HsIf (XIf p) (LHsExpr p) (LHsExpr p) (LHsExpr p)
  - | HsMultiIf (XMultiIf p) [LGRHS p (LHsExpr p)]
  - | HsLet (XLet p) !(LHsToken "let" p) (HsLocalBinds p) !(LHsToken "in" p) (LHsExpr p)
  - | HsDo (XDo p) HsDoFlavour (XRec p [ExprLStmt p])
  - | ExplicitList (XExplicitList p) [LHsExpr p]
  - | RecordCon {
    - rcon_ext :: XRecordCon p
    - rcon_con :: XRec p (ConLikeP p)
    - rcon_flds :: HsRecordBinds p
    }
  - | RecordUpd {
    - rupd_ext :: XRecordUpd p
    - rupd_expr :: LHsExpr p
    - rupd_flds :: LHsRecUpdFields p
    }
  - | HsGetField {
    - gf_ext :: XGetField p
    - gf_expr :: LHsExpr p
    - gf_field :: XRec p (DotFieldOcc p)
    }
  - | HsProjection {
    - proj_ext :: XProjection p
    - proj_flds :: NonEmpty (XRec p (DotFieldOcc p))
    }
  - | ExprWithTySig (XExprWithTySig p) (LHsExpr p) (LHsSigWcType (NoGhcTc p))
  - | ArithSeq (XArithSeq p) (Maybe (SyntaxExpr p)) (ArithSeqInfo p)
  - | HsTypedBracket (XTypedBracket p) (LHsExpr p)
  - | HsUntypedBracket (XUntypedBracket p) (HsQuote p)
  - | HsTypedSplice (XTypedSplice p) (LHsExpr p)
  - | HsUntypedSplice (XUntypedSplice p) (HsUntypedSplice p)
  - | HsProc (XProc p) (LPat p) (LHsCmdTop p)
  - | HsStatic (XStatic p) (LHsExpr p)
  - | HsPragE (XPragE p) (HsPragE p) (LHsExpr p)
  - | XExpr !(XXExpr p)
- data NoExtField = NoExtField
- type family NoGhcTc p
- type family XXIEWrappedName p
- type family XIEType p
- type family XIEPattern p
- type family XIEName p
- type family XXIE x
- type family XIEDocNamed x
- type family XIEDoc x
- type family XIEGroup x
- type family XIEModuleContents x
- type family XIEThingWith x
- type family XIEThingAll x
- type family XIEThingAbs x
- type family XIEVar x
- type family ImportDeclPkgQual x
- type family XXImportDecl x
- type family XCImportDecl x
- type family XXFieldOcc x
- type family XCFieldOcc x
- type family XXConDeclField x
- type family XConDeclField x
- data ConDeclField pass
  - = ConDeclField {
    - cd_fld_ext :: XConDeclField pass
    - cd_fld_names :: [LFieldOcc pass]
    - cd_fld_type :: LBangType pass
    - cd_fld_doc :: Maybe (LHsDoc pass)
    }
  - | XConDeclField !(XXConDeclField pass)
- type family XXTyVarBndr x
- type family XKindedTyVar x
- type family XUserTyVar x
- type family XXHsForAllTelescope x
- type family XHsForAllInvis x
- type family XHsForAllVis x
- type family XXTyLit x
- type family XCharTy x
- type family XStrTy x
- type family XNumTy x
- type family XXType x
- type family XWildCardTy x
- type family XTyLit x
- data HsTyLit pass
  - = HsNumTy (XNumTy pass) Integer
  - | HsStrTy (XStrTy pass) FastString
  - | HsCharTy (XCharTy pass) Char
  - | XTyLit !(XXTyLit pass)
- type family XExplicitTupleTy x
- type family XExplicitListTy x
- type family XRecTy x
- type family XBangTy x
- type family XDocTy x
- type family XSpliceTy x
- type family XKindSig x
- type family XStarTy x
- type family XIParamTy x
- type family XParTy x
- type family XOpTy x
- type family XSumTy x
- type family XTupleTy x
- type family XListTy x
- type family XFunTy x
- type family XAppKindTy x
- type family XAppTy x
- type family XTyVar x
- type family XQualTy x
- type family XForAllTy x
- type family XXHsPatSigType x
- type family XHsPS x
- type family XXHsWildCardBndrs x b
- type family XHsWC x b
- type family XXHsSigType x
- type family XHsSig x
- type family XXHsOuterTyVarBndrs x
- type family XHsOuterExplicit x flag
- type family XHsOuterImplicit x
- type family XXLHsQTyVars x
- type family XHsQTvs x
- type family XHsFieldBind x
- type family XXPat x
- type family XCoPat x
- type family XSigPat x
- type family XNPlusKPat x
- type family XNPat x
- type family XLitPat x
- type family XSplicePat x
- type family XViewPat x
- type family XConPat x
- type family XSumPat x
- type family XTuplePat x
- type family XListPat x
- type family XBangPat x
- type family XParPat x
- type family XAsPat x
- type family XLazyPat x
- type family XVarPat x
- type family XWildPat x
- type family XXOverLit x
- type family XOverLit x
- data HsOverLit p
  - = OverLit {
    - ol_ext :: XOverLit p
    - ol_val :: OverLitVal
    }
  - | XOverLit !(XXOverLit p)
- type family XXLit x
- type family XHsDoublePrim x
- type family XHsFloatPrim x
- type family XHsRat x
- type family XHsInteger x
- type family XHsWord64Prim x
- type family XHsWord32Prim x
- type family XHsWord16Prim x
- type family XHsWord8Prim x
- type family XHsInt64Prim x
- type family XHsInt32Prim x
- type family XHsInt16Prim x
- type family XHsInt8Prim x
- type family XHsWordPrim x
- type family XHsIntPrim x
- type family XHsInt x
- type family XHsStringPrim x
- type family XHsString x
- type family XHsCharPrim x
- type family XHsChar x
- type family XXApplicativeArg x
- type family XApplicativeArgMany x
- type family XApplicativeArgOne x
- type family XXParStmtBlock x x'
- type family XParStmtBlock x x'
- data ParStmtBlock idL idR
  - = ParStmtBlock (XParStmtBlock idL idR) [ExprLStmt idL] [IdP idR] (SyntaxExpr idR)
  - | XParStmtBlock !(XXParStmtBlock idL idR)
- type family XXCmd x
- type family XCmdWrap x
- type family XCmdDo x
- type family XCmdLet x
- type family XCmdIf x
- type family XCmdLamCase x
- type family XCmdCase x
- type family XCmdPar x
- type family XCmdLam x
- type family XCmdApp x
- type family XCmdArrForm x
- type family XCmdArrApp x
- type family XXStmtLR x x' b
- type family XRecStmt x x' b
- type family XTransStmt x x' b
- type family XParStmt x x' b
- type family XLetStmt x x' b
- type family XBodyStmt x x' b
- type family XApplicativeStmt x x' b
- type family XBindStmt x x' b
- type family XLastStmt x x' b
- type family XXGRHS x b
- type family XCGRHS x b
- type family XXGRHSs x b
- type family XCGRHSs x b
- type family XXMatch x b
- type family XCMatch x b
- type family XXMatchGroup x b
- type family XMG x b
- type family XXCmdTop x
- type family XCmdTop x
- data HsCmdTop p
  - = HsCmdTop (XCmdTop p) (LHsCmd p)
  - | XCmdTop !(XXCmdTop p)
- type family XXQuote x
- type family XVarBr x
- type family XTypBr x
- type family XDecBrG x
- type family XDecBrL x
- type family XPatBr x
- type family XExpBr x
- type family XXUntypedSplice x
- type family XQuasiQuote x
- type family XUntypedSpliceExpr x
- type family XXTupArg x
- type family XMissing x
- type family XPresent x
- type family XXAmbiguousFieldOcc x
- type family XAmbiguous x
- type family XUnambiguous x
- type family XXPragE x
- type family XSCC x
- type family XXDotFieldOcc x
- type family XCDotFieldOcc x
- type family XXExpr x
- type family XPragE x
- type family XBinTick x
- type family XTick x
- type family XStatic x
- type family XProc x
- type family XUntypedSplice x
- data HsUntypedSplice id
  - = HsUntypedSpliceExpr (XUntypedSpliceExpr id) (LHsExpr id)
  - | HsQuasiQuote (XQuasiQuote id) (IdP id) (XRec id FastString)
  - | XUntypedSplice !(XXUntypedSplice id)
- type family XTypedSplice x
- type family XUntypedBracket x
- type family XTypedBracket x
- type family XArithSeq x
- type family XExprWithTySig x
- type family XProjection x
- type family XGetField x
- type family XLHsOLRecUpdLabels x
- type family XLHsRecUpdLabels x
- type family XRecordUpd x
- type family XRecordCon x
- type family XExplicitList x
- type family XDo x
- type family XLet x
- type family XMultiIf x
- type family XIf x
- type family XCase x
- type family XExplicitSum x
- type family XExplicitTuple x
- type family XSectionR x
- type family XSectionL x
- type family XPar x
- type family XNegApp x
- type family XOpApp x
- type family XAppTypeE x
- type family XApp x
- type family XLamCase x
- type family XLam x
- type family XLitE x
- type family XOverLitE x
- type family XIPVar x
- type family XOverLabel x
- type family XRecSel x
- type family XUnboundVar x
- type family XVar x
- type family XXModule x
- type family XCModule x
- type family XXInjectivityAnn x
- type family XCInjectivityAnn x
- type family XXRoleAnnotDecl x
- type family XCRoleAnnotDecl x
- type family XXAnnDecl x
- type family XHsAnnotation x
- type family XXWarnDecl x
- type family XWarning x
- type family XXWarnDecls x
- type family XWarnings x
- type family XXRuleBndr x
- type family XRuleBndrSig x
- type family XCRuleBndr x
- type family XXRuleDecl x
- type family XHsRule x
- type family XXRuleDecls x
- type family XCRuleDecls x
- type family XXForeignExport x
- type family XCExport x
- type family XXForeignImport x
- type family XCImport x
- type family XXForeignDecl x
- type family XForeignExport x
- data ForeignExport pass
  - = CExport (XCExport pass) (XRec pass CExportSpec)
  - | XForeignExport !(XXForeignExport pass)
- type family XForeignImport x
- data ForeignImport pass
  - = CImport (XCImport pass) (XRec pass CCallConv) (XRec pass Safety) (Maybe Header) CImportSpec
  - | XForeignImport !(XXForeignImport pass)
- type family XXDefaultDecl x
- type family XCDefaultDecl x
- type family XViaStrategy x
- type family XNewtypeStrategy x
- type family XAnyClassStrategy x
- type family XStockStrategy x
- type family XXDerivDecl x
- type family XCDerivDecl x
- type family XXInstDecl x
- type family XTyFamInstD x
- type family XDataFamInstD x
- type family XClsInstD x
- type family XXClsInstDecl x
- type family XCClsInstDecl x
- type family XXTyFamInstDecl x
- type family XCTyFamInstDecl x
- type family XXFamEqn x r
- type family XCFamEqn x r
- type family XXConDecl x
- type family XConDeclH98 x
- type family XConDeclGADT x
- type family XXDerivClauseTys x
- type family XDctMulti x
- type family XDctSingle x
- type family XXHsDerivingClause x
- type family XCHsDerivingClause x
- type family XXHsDataDefn x
- type family XCHsDataDefn x
- type family XXFamilyDecl x
- type family XCFamilyDecl x
- type family XXFamilyResultSig x
- type family XTyVarSig x
- type family XCKindSig x
- type family XNoSig x
- type family XXTyClGroup x
- type family XCTyClGroup x
- type family XXFunDep x
- type family XCFunDep x
- type family XXTyClDecl x
- type family XClassDecl x
- type family XDataDecl x
- type family XSynDecl x
- type family XFamDecl x
- type family XXSpliceDecl x
- type family XSpliceDecl x
- data SpliceDecl p
  - = SpliceDecl (XSpliceDecl p) (XRec p (HsUntypedSplice p)) SpliceDecoration
  - | XSpliceDecl !(XXSpliceDecl p)
- type family XXHsGroup x
- type family XCHsGroup x
- type family XXHsDecl x
- type family XRoleAnnotD x
- type family XDocD x
- type family XSpliceD x
- type family XRuleD x
- type family XAnnD x
- type family XWarningD x
- type family XForD x
- type family XDefD x
- type family XKindSigD x
- type family XSigD x
- type family XValD x
- type family XDerivD x
- type family XInstD x
- type family XTyClD x
- type family XXStandaloneKindSig x
- type family XStandaloneKindSig x
- data StandaloneKindSig pass
  - = StandaloneKindSig (XStandaloneKindSig pass) (LIdP pass) (LHsSigType pass)
  - | XStandaloneKindSig !(XXStandaloneKindSig pass)
- type family XXFixitySig x
- type family XFixitySig x
- data FixitySig pass
  - = FixitySig (XFixitySig pass) [LIdP pass] Fixity
  - | XFixitySig !(XXFixitySig pass)
- type family XXSig x
- type family XCompleteMatchSig x
- type family XSCCFunSig x
- type family XMinimalSig x
- type family XSpecInstSig x
- type family XSpecSig x
- type family XInlineSig x
- type family XFixSig x
- type family XIdSig x
- type family XClassOpSig x
- type family XPatSynSig x
- type family XTypeSig x
- type family XXIPBind x
- type family XCIPBind x
- type family XXHsIPBinds x
- type family XIPBinds x
- type family XXPatSynBind x x'
- type family XPSB x x'
- type family XXHsBindsLR x x'
- type family XPatSynBind x x'
- data PatSynBind idL idR
  - = PSB {
    - psb_ext :: XPSB idL idR
    - psb_id :: LIdP idL
    - psb_args :: HsPatSynDetails idR
    - psb_def :: LPat idR
    - psb_dir :: HsPatSynDir idR
    }
  - | XPatSynBind !(XXPatSynBind idL idR)
- type family XVarBind x x'
- type family XPatBind x x'
- type family XFunBind x x'
- type family XXValBindsLR x x'
- type family XValBinds x x'
- type family XXHsLocalBindsLR x x'
- type family XEmptyLocalBinds x x'
- type family XHsIPBinds x x'
- data HsIPBinds id
  - = IPBinds (XIPBinds id) [LIPBind id]
  - | XHsIPBinds !(XXHsIPBinds id)
- type family XHsValBinds x x'
- type LIdP p = XRec p (IdP p)
- type family IdP p
- class WrapXRec p a where
  - wrapXRec :: a -> XRec p a
- class MapXRec p where
  - mapXRec :: Anno a ~ Anno b => (a -> b) -> XRec p a -> XRec p b
- class UnXRec p where
  - unXRec :: XRec p a -> a
- type family Anno a = (b :: Type)
- type family XRec p a = (r :: Type) | r -> a
- data DataConCantHappen
- noExtField :: NoExtField
- dataConCantHappen :: DataConCantHappen -> a
- newtype ModuleName = ModuleName FastString
- stableModuleNameCmp :: ModuleName -> ModuleName -> Ordering
- moduleNameFS :: ModuleName -> FastString
- moduleNameString :: ModuleName -> String
- mkModuleName :: String -> ModuleName
- mkModuleNameFS :: FastString -> ModuleName
- moduleNameSlashes :: ModuleName -> String
- moduleNameColons :: ModuleName -> String
- parseModuleName :: ReadP ModuleName
- data IsBootInterface
  - = NotBoot
  - | IsBoot
- data LayoutInfo pass
  - = ExplicitBraces !(LHsToken "{" pass) !(LHsToken "}" pass)
  - | VirtualBraces !Int
  - | NoLayoutInfo
- data HsUniToken (tok :: Symbol) (utok :: Symbol)
  - = HsNormalTok
  - | HsUnicodeTok
- data HsToken (tok :: Symbol) = HsTok
- type LHsUniToken (tok :: Symbol) (utok :: Symbol) p = XRec p (HsUniToken tok utok)
- type LHsToken (tok :: Symbol) p = XRec p (HsToken tok)
- type LPat p = XRec p (Pat p)
- type LHsExpr p = XRec p (HsExpr p)
- type family SyntaxExpr p
- data GRHSs p body
  - = GRHSs {
    - grhssExt :: XCGRHSs p body
    - grhssGRHSs :: [LGRHS p body]
    - grhssLocalBinds :: HsLocalBinds p
    }
  - | XGRHSs !(XXGRHSs p body)
- data MatchGroup p body
  - = MG {
    - mg_ext :: XMG p body
    - mg_alts :: XRec p [LMatch p body]
    }
  - | XMatchGroup !(XXMatchGroup p body)
- data PromotionFlag
  - = NotPromoted
  - | IsPromoted
- isPromoted :: PromotionFlag -> Bool
- data CImportSpec
  - = CLabel CLabelString
  - | CFunction CCallTarget
  - | CWrapper
- type LIEWrappedName p = XRec p (IEWrappedName p)
- data IEWrappedName p
  - = IEName (XIEName p) (LIdP p)
  - | IEPattern (XIEPattern p) (LIdP p)
  - | IEType (XIEType p) (LIdP p)
  - | XIEWrappedName !(XXIEWrappedName p)
- data IEWildcard
  - = NoIEWildcard
  - | IEWildcard Int
- type LIE pass = XRec pass (IE pass)
- data ImportListInterpretation
  - = Exactly
  - | EverythingBut
- data ImportDecl pass
  - = ImportDecl {
    - ideclExt :: XCImportDecl pass
    - ideclName :: XRec pass ModuleName
    - ideclPkgQual :: ImportDeclPkgQual pass
    - ideclSource :: IsBootInterface
    - ideclSafe :: Bool
    - ideclQualified :: ImportDeclQualifiedStyle
    - ideclAs :: Maybe (XRec pass ModuleName)
    - ideclImportList :: Maybe (ImportListInterpretation, XRec pass [LIE pass])
    }
  - | XImportDecl !(XXImportDecl pass)
- data ImportDeclQualifiedStyle
  - = QualifiedPre
  - | QualifiedPost
  - | NotQualified
- type LImportDecl pass = XRec pass (ImportDecl pass)
- data WarnDecls pass
  - = Warnings {
    - wd_ext :: XWarnings pass
    - wd_warnings :: [LWarnDecl pass]
    }
  - | XWarnDecls !(XXWarnDecls pass)
- data OverLitVal
  - = HsIntegral !IntegralLit
  - | HsFractional !FractionalLit
  - | HsIsString !SourceText !FastString
- data HsLit x
  - = HsChar (XHsChar x) Char
  - | HsCharPrim (XHsCharPrim x) Char
  - | HsString (XHsString x) FastString
  - | HsStringPrim (XHsStringPrim x) !ByteString
  - | HsInt (XHsInt x) IntegralLit
  - | HsIntPrim (XHsIntPrim x) Integer
  - | HsWordPrim (XHsWordPrim x) Integer
  - | HsInt8Prim (XHsInt8Prim x) Integer
  - | HsInt16Prim (XHsInt16Prim x) Integer
  - | HsInt32Prim (XHsInt32Prim x) Integer
  - | HsInt64Prim (XHsInt64Prim x) Integer
  - | HsWord8Prim (XHsWord8Prim x) Integer
  - | HsWord16Prim (XHsWord16Prim x) Integer
  - | HsWord32Prim (XHsWord32Prim x) Integer
  - | HsWord64Prim (XHsWord64Prim x) Integer
  - | HsInteger (XHsInteger x) Integer Type
  - | HsRat (XHsRat x) FractionalLit Type
  - | HsFloatPrim (XHsFloatPrim x) FractionalLit
  - | HsDoublePrim (XHsDoublePrim x) FractionalLit
  - | XLit !(XXLit x)
- negateOverLitVal :: OverLitVal -> OverLitVal
- data HsSrcBang = HsSrcBang SourceText SrcUnpackedness SrcStrictness
- data AmbiguousFieldOcc pass
  - = Unambiguous (XUnambiguous pass) (XRec pass RdrName)
  - | Ambiguous (XAmbiguous pass) (XRec pass RdrName)
  - | XAmbiguousFieldOcc !(XXAmbiguousFieldOcc pass)
- type LAmbiguousFieldOcc pass = XRec pass (AmbiguousFieldOcc pass)
- data FieldOcc pass
  - = FieldOcc {
    - foExt :: XCFieldOcc pass
    - foLabel :: XRec pass RdrName
    }
  - | XFieldOcc !(XXFieldOcc pass)
- type LFieldOcc pass = XRec pass (FieldOcc pass)
- type LHsTypeArg p = HsArg p (LHsType p) (LHsKind p)
- data HsArg p tm ty
  - = HsValArg tm
  - | HsTypeArg !(LHsToken "@" p) ty
  - | HsArgPar SrcSpan
- data HsConDetails tyarg arg rec
  - = PrefixCon [tyarg] [arg]
  - | RecCon rec
  - | InfixCon arg arg
- type LConDeclField pass = XRec pass (ConDeclField pass)
- data HsTupleSort
  - = HsUnboxedTuple
  - | HsBoxedOrConstraintTuple
- data HsScaled pass a = HsScaled (HsArrow pass) a
- data HsLinearArrowTokens pass
  - = HsPct1 !(LHsToken "%1" pass) !(LHsUniToken "->" "\8594" pass)
  - | HsLolly !(LHsToken "\8888" pass)
- data HsArrow pass
  - = HsUnrestrictedArrow !(LHsUniToken "->" "\8594" pass)
  - | HsLinearArrow !(HsLinearArrowTokens pass)
  - | HsExplicitMult !(LHsToken "%" pass) !(LHsType pass) !(LHsUniToken "->" "\8594" pass)
- data HsType pass
  - = HsForAllTy {
    - hst_xforall :: XForAllTy pass
    - hst_tele :: HsForAllTelescope pass
    - hst_body :: LHsType pass
    }
  - | HsQualTy {
    - hst_xqual :: XQualTy pass
    - hst_ctxt :: LHsContext pass
    - hst_body :: LHsType pass
    }
  - | HsTyVar (XTyVar pass) PromotionFlag (LIdP pass)
  - | HsAppTy (XAppTy pass) (LHsType pass) (LHsType pass)
  - | HsAppKindTy (XAppKindTy pass) (LHsType pass) !(LHsToken "@" pass) (LHsKind pass)
  - | HsFunTy (XFunTy pass) (HsArrow pass) (LHsType pass) (LHsType pass)
  - | HsListTy (XListTy pass) (LHsType pass)
  - | HsTupleTy (XTupleTy pass) HsTupleSort [LHsType pass]
  - | HsSumTy (XSumTy pass) [LHsType pass]
  - | HsOpTy (XOpTy pass) PromotionFlag (LHsType pass) (LIdP pass) (LHsType pass)
  - | HsParTy (XParTy pass) (LHsType pass)
  - | HsIParamTy (XIParamTy pass) (XRec pass HsIPName) (LHsType pass)
  - | HsStarTy (XStarTy pass) Bool
  - | HsKindSig (XKindSig pass) (LHsType pass) (LHsKind pass)
  - | HsSpliceTy (XSpliceTy pass) (HsUntypedSplice pass)
  - | HsDocTy (XDocTy pass) (LHsType pass) (LHsDoc pass)
  - | HsBangTy (XBangTy pass) HsSrcBang (LHsType pass)
  - | HsRecTy (XRecTy pass) [LConDeclField pass]
  - | HsExplicitListTy (XExplicitListTy pass) PromotionFlag [LHsType pass]
  - | HsExplicitTupleTy (XExplicitTupleTy pass) [LHsType pass]
  - | HsTyLit (XTyLit pass) (HsTyLit pass)
  - | HsWildCardTy (XWildCardTy pass)
  - | XHsType !(XXType pass)
- data HsBndrVis pass
  - = HsBndrRequired
  - | HsBndrInvisible (LHsToken "@" pass)
- data HsTyVarBndr flag pass
  - = UserTyVar (XUserTyVar pass) flag (LIdP pass)
  - | KindedTyVar (XKindedTyVar pass) flag (LIdP pass) (LHsKind pass)
  - | XTyVarBndr !(XXTyVarBndr pass)
- newtype HsIPName = HsIPName FastString
- data HsSigType pass
  - = HsSig {
    - sig_ext :: XHsSig pass
    - sig_bndrs :: HsOuterSigTyVarBndrs pass
    - sig_body :: LHsType pass
    }
  - | XHsSigType !(XXHsSigType pass)
- type LHsSigWcType pass = HsWildCardBndrs pass (LHsSigType pass)
- type LHsWcType pass = HsWildCardBndrs pass (LHsType pass)
- type LHsSigType pass = XRec pass (HsSigType pass)
- data HsPatSigType pass
  - = HsPS {
    - hsps_ext :: XHsPS pass
    - hsps_body :: LHsType pass
    }
  - | XHsPatSigType !(XXHsPatSigType pass)
- data HsWildCardBndrs pass thing
  - = HsWC {
    - hswc_ext :: XHsWC pass thing
    - hswc_body :: thing
    }
  - | XHsWildCardBndrs !(XXHsWildCardBndrs pass thing)
- type HsOuterFamEqnTyVarBndrs = HsOuterTyVarBndrs ()
- type HsOuterSigTyVarBndrs = HsOuterTyVarBndrs Specificity
- data HsOuterTyVarBndrs flag pass
  - = HsOuterImplicit {
    - hso_ximplicit :: XHsOuterImplicit pass
    }
  - | HsOuterExplicit {
    - hso_xexplicit :: XHsOuterExplicit pass flag
    - hso_bndrs :: [LHsTyVarBndr flag (NoGhcTc pass)]
    }
  - | XHsOuterTyVarBndrs !(XXHsOuterTyVarBndrs pass)
- data LHsQTyVars pass
  - = HsQTvs {
    - hsq_ext :: XHsQTvs pass
    - hsq_explicit :: [LHsTyVarBndr (HsBndrVis pass) pass]
    }
  - | XLHsQTyVars !(XXLHsQTyVars pass)
- type LHsTyVarBndr flag pass = XRec pass (HsTyVarBndr flag pass)
- data HsForAllTelescope pass
  - = HsForAllVis {
    - hsf_xvis :: XHsForAllVis pass
    - hsf_vis_bndrs :: [LHsTyVarBndr () pass]
    }
  - | HsForAllInvis {
    - hsf_xinvis :: XHsForAllInvis pass
    - hsf_invis_bndrs :: [LHsTyVarBndr Specificity pass]
    }
  - | XHsForAllTelescope !(XXHsForAllTelescope pass)
- type LHsKind pass = XRec pass (HsKind pass)
- type HsKind pass = HsType pass
- type LHsType pass = XRec pass (HsType pass)
- type HsContext pass = [LHsType pass]
- type LHsContext pass = XRec pass (HsContext pass)
- type LBangType pass = XRec pass (BangType pass)
- hsQTvExplicit :: LHsQTyVars pass -> [LHsTyVarBndr (HsBndrVis pass) pass]
- hsPatSigType :: HsPatSigType pass -> LHsType pass
- mapHsOuterImplicit :: (XHsOuterImplicit pass -> XHsOuterImplicit pass) -> HsOuterTyVarBndrs flag pass -> HsOuterTyVarBndrs flag pass
- hsIPNameFS :: HsIPName -> FastString
- isHsBndrInvisible :: HsBndrVis pass -> Bool
- isHsKindedTyVar :: HsTyVarBndr flag pass -> Bool
- hsMult :: HsScaled pass a -> HsArrow pass
- hsScaledThing :: HsScaled pass a -> a
- noTypeArgs :: [Void]
- conDetailsArity :: (rec -> Arity) -> HsConDetails tyarg arg rec -> Arity
- data HsFieldBind lhs rhs = HsFieldBind {
  - hfbAnn :: XHsFieldBind lhs
  - hfbLHS :: lhs
  - hfbRHS :: rhs
  - hfbPun :: Bool
  }
- type HsRecUpdField p q = HsFieldBind (LAmbiguousFieldOcc p) (LHsExpr q)
- type HsRecField p arg = HsFieldBind (LFieldOcc p) arg
- type LHsRecUpdField p q = XRec p (HsRecUpdField p q)
- type LHsRecField p arg = XRec p (HsRecField p arg)
- type LHsFieldBind p id arg = XRec p (HsFieldBind id arg)
- newtype RecFieldsDotDot = RecFieldsDotDot {
  - unRecFieldsDotDot :: Int
  }
- data HsRecFields p arg = HsRecFields {
  - rec_flds :: [LHsRecField p arg]
  - rec_dotdot :: Maybe (XRec p RecFieldsDotDot)
  }
- type HsConPatDetails p = HsConDetails (HsConPatTyArg (NoGhcTc p)) (LPat p) (HsRecFields p (LPat p))
- data HsConPatTyArg p = HsConPatTyArg !(LHsToken "@" p) (HsPatSigType p)
- type family ConLikeP x
- hsConPatArgs :: UnXRec p => HsConPatDetails p -> [LPat p]
- hsRecFields :: UnXRec p => HsRecFields p arg -> [XCFieldOcc p]
- hsRecFieldsArgs :: UnXRec p => HsRecFields p arg -> [arg]
- hsRecFieldSel :: UnXRec p => HsRecField p arg -> XCFieldOcc p
- data HsPatSynDir id
  - = Unidirectional
  - | ImplicitBidirectional
  - | ExplicitBidirectional (MatchGroup id (LHsExpr id))
- data RecordPatSynField pass = RecordPatSynField {
  - recordPatSynField :: FieldOcc pass
  - recordPatSynPatVar :: LIdP pass
  }
- type HsPatSynDetails pass = HsConDetails Void (LIdP pass) [RecordPatSynField pass]
- type LFixitySig pass = XRec pass (FixitySig pass)
- data Sig pass
  - = TypeSig (XTypeSig pass) [LIdP pass] (LHsSigWcType pass)
  - | PatSynSig (XPatSynSig pass) [LIdP pass] (LHsSigType pass)
  - | ClassOpSig (XClassOpSig pass) Bool [LIdP pass] (LHsSigType pass)
  - | FixSig (XFixSig pass) (FixitySig pass)
  - | InlineSig (XInlineSig pass) (LIdP pass) InlinePragma
  - | SpecSig (XSpecSig pass) (LIdP pass) [LHsSigType pass] InlinePragma
  - | SpecInstSig (XSpecInstSig pass) (LHsSigType pass)
  - | MinimalSig (XMinimalSig pass) (LBooleanFormula (LIdP pass))
  - | SCCFunSig (XSCCFunSig pass) (LIdP pass) (Maybe (XRec pass StringLiteral))
  - | CompleteMatchSig (XCompleteMatchSig pass) (XRec pass [LIdP pass]) (Maybe (LIdP pass))
  - | XSig !(XXSig pass)
- type LSig pass = XRec pass (Sig pass)
- data IPBind id
  - = IPBind (XCIPBind id) (XRec id HsIPName) (LHsExpr id)
  - | XIPBind !(XXIPBind id)
- type LIPBind id = XRec id (IPBind id)
- data HsLocalBindsLR idL idR
  - = HsValBinds (XHsValBinds idL idR) (HsValBindsLR idL idR)
  - | HsIPBinds (XHsIPBinds idL idR) (HsIPBinds idR)
  - | EmptyLocalBinds (XEmptyLocalBinds idL idR)
  - | XHsLocalBindsLR !(XXHsLocalBindsLR idL idR)
- data HsBindLR idL idR
  - = FunBind {
    - fun_ext :: XFunBind idL idR
    - fun_id :: LIdP idL
    - fun_matches :: MatchGroup idR (LHsExpr idR)
    }
  - | PatBind {
    - pat_ext :: XPatBind idL idR
    - pat_lhs :: LPat idL
    - pat_rhs :: GRHSs idR (LHsExpr idR)
    }
  - | VarBind {
    - var_ext :: XVarBind idL idR
    - var_id :: IdP idL
    - var_rhs :: LHsExpr idR
    }
  - | PatSynBind (XPatSynBind idL idR) (PatSynBind idL idR)
  - | XHsBindsLR !(XXHsBindsLR idL idR)
- type LHsBindLR idL idR = XRec idL (HsBindLR idL idR)
- type LHsBindsLR idL idR = Bag (LHsBindLR idL idR)
- type HsBind id = HsBindLR id id
- type LHsBinds id = LHsBindsLR id id
- type LHsBind id = LHsBindLR id id
- data HsValBindsLR idL idR
  - = ValBinds (XValBinds idL idR) (LHsBindsLR idL idR) [LSig idR]
  - | XValBindsLR !(XXValBindsLR idL idR)
- type HsValBinds id = HsValBindsLR id id
- type LHsLocalBindsLR idL idR = XRec idL (HsLocalBindsLR idL idR)
- type LHsLocalBinds id = XRec id (HsLocalBinds id)
- type HsLocalBinds id = HsLocalBindsLR id id
- isFixityLSig :: UnXRec p => LSig p -> Bool
- isTypeLSig :: UnXRec p => LSig p -> Bool
- isSpecLSig :: UnXRec p => LSig p -> Bool
- isSpecInstLSig :: UnXRec p => LSig p -> Bool
- isPragLSig :: UnXRec p => LSig p -> Bool
- isInlineLSig :: UnXRec p => LSig p -> Bool
- isMinimalLSig :: UnXRec p => LSig p -> Bool
- isSCCFunSig :: UnXRec p => LSig p -> Bool
- isCompleteMatchSig :: UnXRec p => LSig p -> Bool
- data RoleAnnotDecl pass
  - = RoleAnnotDecl (XCRoleAnnotDecl pass) (LIdP pass) [XRec pass (Maybe Role)]
  - | XRoleAnnotDecl !(XXRoleAnnotDecl pass)
- type LRoleAnnotDecl pass = XRec pass (RoleAnnotDecl pass)
- data AnnProvenance pass
  - = ValueAnnProvenance (LIdP pass)
  - | TypeAnnProvenance (LIdP pass)
  - | ModuleAnnProvenance
- type LAnnDecl pass = XRec pass (AnnDecl pass)
- type LWarnDecl pass = XRec pass (WarnDecl pass)
- type LWarnDecls pass = XRec pass (WarnDecls pass)
- data DocDecl pass
  - = DocCommentNext (LHsDoc pass)
  - | DocCommentPrev (LHsDoc pass)
  - | DocCommentNamed String (LHsDoc pass)
  - | DocGroup Int (LHsDoc pass)
- type LDocDecl pass = XRec pass (DocDecl pass)
- type LRuleBndr pass = XRec pass (RuleBndr pass)
- data RuleDecl pass
  - = HsRule {
    - rd_ext :: XHsRule pass
    - rd_name :: XRec pass RuleName
    - rd_act :: Activation
    - rd_tyvs :: Maybe [LHsTyVarBndr () (NoGhcTc pass)]
    - rd_tmvs :: [LRuleBndr pass]
    - rd_lhs :: XRec pass (HsExpr pass)
    - rd_rhs :: XRec pass (HsExpr pass)
    }
  - | XRuleDecl !(XXRuleDecl pass)
- type LRuleDecl pass = XRec pass (RuleDecl pass)
- data RuleDecls pass
  - = HsRules {
    - rds_ext :: XCRuleDecls pass
    - rds_rules :: [LRuleDecl pass]
    }
  - | XRuleDecls !(XXRuleDecls pass)
- type LRuleDecls pass = XRec pass (RuleDecls pass)
- data ForeignDecl pass
  - = ForeignImport {
    - fd_i_ext :: XForeignImport pass
    - fd_name :: LIdP pass
    - fd_sig_ty :: LHsSigType pass
    - fd_fi :: ForeignImport pass
    }
  - | ForeignExport {
    - fd_e_ext :: XForeignExport pass
    - fd_name :: LIdP pass
    - fd_sig_ty :: LHsSigType pass
    - fd_fe :: ForeignExport pass
    }
  - | XForeignDecl !(XXForeignDecl pass)
- type LForeignDecl pass = XRec pass (ForeignDecl pass)
- data DefaultDecl pass
  - = DefaultDecl (XCDefaultDecl pass) [LHsType pass]
  - | XDefaultDecl !(XXDefaultDecl pass)
- type LDefaultDecl pass = XRec pass (DefaultDecl pass)
- type LDerivStrategy pass = XRec pass (DerivStrategy pass)
- data DerivDecl pass
  - = DerivDecl {
    - deriv_ext :: XCDerivDecl pass
    - deriv_type :: LHsSigWcType pass
    - deriv_strategy :: Maybe (LDerivStrategy pass)
    - deriv_overlap_mode :: Maybe (XRec pass OverlapMode)
    }
  - | XDerivDecl !(XXDerivDecl pass)
- type LDerivDecl pass = XRec pass (DerivDecl pass)
- data InstDecl pass
  - = ClsInstD {
    - cid_d_ext :: XClsInstD pass
    - cid_inst :: ClsInstDecl pass
    }
  - | DataFamInstD {
    - dfid_ext :: XDataFamInstD pass
    - dfid_inst :: DataFamInstDecl pass
    }
  - | TyFamInstD {
    - tfid_ext :: XTyFamInstD pass
    - tfid_inst :: TyFamInstDecl pass
    }
  - | XInstDecl !(XXInstDecl pass)
- type LInstDecl pass = XRec pass (InstDecl pass)
- data ClsInstDecl pass
  - = ClsInstDecl {
    - cid_ext :: XCClsInstDecl pass
    - cid_poly_ty :: LHsSigType pass
    - cid_binds :: LHsBinds pass
    - cid_sigs :: [LSig pass]
    - cid_tyfam_insts :: [LTyFamInstDecl pass]
    - cid_datafam_insts :: [LDataFamInstDecl pass]
    - cid_overlap_mode :: Maybe (XRec pass OverlapMode)
    }
  - | XClsInstDecl !(XXClsInstDecl pass)
- type LClsInstDecl pass = XRec pass (ClsInstDecl pass)
- data FamEqn pass rhs
  - = FamEqn {
    - feqn_ext :: XCFamEqn pass rhs
    - feqn_tycon :: LIdP pass
    - feqn_bndrs :: HsOuterFamEqnTyVarBndrs pass
    - feqn_pats :: HsTyPats pass
    - feqn_fixity :: LexicalFixity
    - feqn_rhs :: rhs
    }
  - | XFamEqn !(XXFamEqn pass rhs)
- newtype DataFamInstDecl pass = DataFamInstDecl {
  - dfid_eqn :: FamEqn pass (HsDataDefn pass)
  }
- type LDataFamInstDecl pass = XRec pass (DataFamInstDecl pass)
- data TyFamInstDecl pass
  - = TyFamInstDecl {
    - tfid_xtn :: XCTyFamInstDecl pass
    - tfid_eqn :: TyFamInstEqn pass
    }
  - | XTyFamInstDecl !(XXTyFamInstDecl pass)
- type LTyFamInstDecl pass = XRec pass (TyFamInstDecl pass)
- type LTyFamDefltDecl pass = XRec pass (TyFamDefltDecl pass)
- type TyFamDefltDecl = TyFamInstDecl
- type TyFamInstEqn pass = FamEqn pass (LHsType pass)
- type HsTyPats pass = [LHsTypeArg pass]
- type LTyFamInstEqn pass = XRec pass (TyFamInstEqn pass)
- data HsConDeclGADTDetails pass
  - = PrefixConGADT [HsScaled pass (LBangType pass)]
  - | RecConGADT (XRec pass [LConDeclField pass]) (LHsUniToken "->" "\8594" pass)
- type HsConDeclH98Details pass = HsConDetails Void (HsScaled pass (LBangType pass)) (XRec pass [LConDeclField pass])
- data ConDecl pass
  - = ConDeclGADT {
    - con_g_ext :: XConDeclGADT pass
    - con_names :: NonEmpty (LIdP pass)
    - con_dcolon :: !(LHsUniToken "::" "\8759" pass)
    - con_bndrs :: XRec pass (HsOuterSigTyVarBndrs pass)
    - con_mb_cxt :: Maybe (LHsContext pass)
    - con_g_args :: HsConDeclGADTDetails pass
    - con_res_ty :: LHsType pass
    - con_doc :: Maybe (LHsDoc pass)
    }
  - | ConDeclH98 {
    - con_ext :: XConDeclH98 pass
    - con_name :: LIdP pass
    - con_forall :: Bool
    - con_ex_tvs :: [LHsTyVarBndr Specificity pass]
    - con_mb_cxt :: Maybe (LHsContext pass)
    - con_args :: HsConDeclH98Details pass
    - con_doc :: Maybe (LHsDoc pass)
    }
  - | XConDecl !(XXConDecl pass)
- type LConDecl pass = XRec pass (ConDecl pass)
- data DataDefnCons a
  - = NewTypeCon a
  - | DataTypeCons Bool [a]
- type LStandaloneKindSig pass = XRec pass (StandaloneKindSig pass)
- data DerivClauseTys pass
  - = DctSingle (XDctSingle pass) (LHsSigType pass)
  - | DctMulti (XDctMulti pass) [LHsSigType pass]
  - | XDerivClauseTys !(XXDerivClauseTys pass)
- type LDerivClauseTys pass = XRec pass (DerivClauseTys pass)
- data HsDerivingClause pass
  - = HsDerivingClause {
    - deriv_clause_ext :: XCHsDerivingClause pass
    - deriv_clause_strategy :: Maybe (LDerivStrategy pass)
    - deriv_clause_tys :: LDerivClauseTys pass
    }
  - | XHsDerivingClause !(XXHsDerivingClause pass)
- type LHsDerivingClause pass = XRec pass (HsDerivingClause pass)
- type HsDeriving pass = [LHsDerivingClause pass]
- data HsDataDefn pass
  - = HsDataDefn {
    - dd_ext :: XCHsDataDefn pass
    - dd_ctxt :: Maybe (LHsContext pass)
    - dd_cType :: Maybe (XRec pass CType)
    - dd_kindSig :: Maybe (LHsKind pass)
    - dd_cons :: DataDefnCons (LConDecl pass)
    - dd_derivs :: HsDeriving pass
    }
  - | XHsDataDefn !(XXHsDataDefn pass)
- data FamilyInfo pass
  - = DataFamily
  - | OpenTypeFamily
  - | ClosedTypeFamily (Maybe [LTyFamInstEqn pass])
- type LInjectivityAnn pass = XRec pass (InjectivityAnn pass)
- data FamilyDecl pass
  - = FamilyDecl {
    - fdExt :: XCFamilyDecl pass
    - fdInfo :: FamilyInfo pass
    - fdTopLevel :: TopLevelFlag
    - fdLName :: LIdP pass
    - fdTyVars :: LHsQTyVars pass
    - fdFixity :: LexicalFixity
    - fdResultSig :: LFamilyResultSig pass
    - fdInjectivityAnn :: Maybe (LInjectivityAnn pass)
    }
  - | XFamilyDecl !(XXFamilyDecl pass)
- type LFamilyDecl pass = XRec pass (FamilyDecl pass)
- data FamilyResultSig pass
  - = NoSig (XNoSig pass)
  - | KindSig (XCKindSig pass) (LHsKind pass)
  - | TyVarSig (XTyVarSig pass) (LHsTyVarBndr () pass)
  - | XFamilyResultSig !(XXFamilyResultSig pass)
- type LFamilyResultSig pass = XRec pass (FamilyResultSig pass)
- data TyClGroup pass
  - = TyClGroup {
    - group_ext :: XCTyClGroup pass
    - group_tyclds :: [LTyClDecl pass]
    - group_roles :: [LRoleAnnotDecl pass]
    - group_kisigs :: [LStandaloneKindSig pass]
    - group_instds :: [LInstDecl pass]
    }
  - | XTyClGroup !(XXTyClGroup pass)
- type LHsFunDep pass = XRec pass (FunDep pass)
- pattern XFunDep :: !(XXFunDep pass) -> FunDep pass
- data TyClDecl pass
  - = FamDecl {
    - tcdFExt :: XFamDecl pass
    - tcdFam :: FamilyDecl pass
    }
  - | SynDecl {
    - tcdSExt :: XSynDecl pass
    - tcdLName :: LIdP pass
    - tcdTyVars :: LHsQTyVars pass
    - tcdFixity :: LexicalFixity
    - tcdRhs :: LHsType pass
    }
  - | DataDecl {
    - tcdDExt :: XDataDecl pass
    - tcdLName :: LIdP pass
    - tcdTyVars :: LHsQTyVars pass
    - tcdFixity :: LexicalFixity
    - tcdDataDefn :: HsDataDefn pass
    }
  - | ClassDecl {
    - tcdCExt :: XClassDecl pass
    - tcdLayout :: !(LayoutInfo pass)
    - tcdCtxt :: Maybe (LHsContext pass)
    - tcdLName :: LIdP pass
    - tcdTyVars :: LHsQTyVars pass
    - tcdFixity :: LexicalFixity
    - tcdFDs :: [LHsFunDep pass]
    - tcdSigs :: [LSig pass]
    - tcdMeths :: LHsBinds pass
    - tcdATs :: [LFamilyDecl pass]
    - tcdATDefs :: [LTyFamDefltDecl pass]
    - tcdDocs :: [LDocDecl pass]
    }
  - | XTyClDecl !(XXTyClDecl pass)
- type LTyClDecl pass = XRec pass (TyClDecl pass)
- data SpliceDecoration
  - = DollarSplice
  - | BareSplice
- type LSpliceDecl pass = XRec pass (SpliceDecl pass)
- data HsGroup p
  - = HsGroup {
    - hs_ext :: XCHsGroup p
    - hs_valds :: HsValBinds p
    - hs_splcds :: [LSpliceDecl p]
    - hs_tyclds :: [TyClGroup p]
    - hs_derivds :: [LDerivDecl p]
    - hs_fixds :: [LFixitySig p]
    - hs_defds :: [LDefaultDecl p]
    - hs_fords :: [LForeignDecl p]
    - hs_warnds :: [LWarnDecls p]
    - hs_annds :: [LAnnDecl p]
    - hs_ruleds :: [LRuleDecls p]
    - hs_docs :: [LDocDecl p]
    }
  - | XHsGroup !(XXHsGroup p)
- data HsDecl p
  - = TyClD (XTyClD p) (TyClDecl p)
  - | InstD (XInstD p) (InstDecl p)
  - | DerivD (XDerivD p) (DerivDecl p)
  - | ValD (XValD p) (HsBind p)
  - | SigD (XSigD p) (Sig p)
  - | KindSigD (XKindSigD p) (StandaloneKindSig p)
  - | DefD (XDefD p) (DefaultDecl p)
  - | ForD (XForD p) (ForeignDecl p)
  - | WarningD (XWarningD p) (WarnDecls p)
  - | AnnD (XAnnD p) (AnnDecl p)
  - | RuleD (XRuleD p) (RuleDecls p)
  - | SpliceD (XSpliceD p) (SpliceDecl p)
  - | DocD (XDocD p) (DocDecl p)
  - | RoleAnnotD (XRoleAnnotD p) (RoleAnnotDecl p)
  - | XHsDecl !(XXHsDecl p)
- type LHsDecl p = XRec p (HsDecl p)
- hsGroupInstDecls :: HsGroup id -> [LInstDecl id]
- isDataDecl :: TyClDecl pass -> Bool
- isSynDecl :: TyClDecl pass -> Bool
- isClassDecl :: TyClDecl pass -> Bool
- isFamilyDecl :: TyClDecl pass -> Bool
- isTypeFamilyDecl :: TyClDecl pass -> Bool
- isOpenTypeFamilyInfo :: FamilyInfo pass -> Bool
- isClosedTypeFamilyInfo :: FamilyInfo pass -> Bool
- isDataFamilyDecl :: TyClDecl pass -> Bool
- tyClDeclTyVars :: TyClDecl pass -> LHsQTyVars pass
- tyClGroupTyClDecls :: [TyClGroup pass] -> [LTyClDecl pass]
- tyClGroupInstDecls :: [TyClGroup pass] -> [LInstDecl pass]
- tyClGroupRoleDecls :: [TyClGroup pass] -> [LRoleAnnotDecl pass]
- tyClGroupKindSigs :: [TyClGroup pass] -> [LStandaloneKindSig pass]
- familyInfoTyConFlavour :: Maybe tc -> FamilyInfo pass -> TyConFlavour tc
- dataDefnConsNewOrData :: DataDefnCons a -> NewOrData
- isTypeDataDefnCons :: DataDefnCons a -> Bool
- firstDataDefnCon :: DataDefnCons a -> Maybe a
- collectRuleBndrSigTys :: [RuleBndr pass] -> [HsPatSigType pass]
- docDeclDoc :: DocDecl pass -> LHsDoc pass
- annProvenanceName_maybe :: UnXRec p => AnnProvenance p -> Maybe (IdP p)
- data HsDoFlavour
  - = DoExpr (Maybe ModuleName)
  - | MDoExpr (Maybe ModuleName)
  - | GhciStmtCtxt
  - | ListComp
  - | MonadComp
- data HsArrowMatchContext
  - = ProcExpr
  - | ArrowCaseAlt
  - | ArrowLamCaseAlt LamCaseVariant
  - | KappaExpr
- data HsStmtContext p
  - = HsDoStmt HsDoFlavour
  - | PatGuard (HsMatchContext p)
  - | ParStmtCtxt (HsStmtContext p)
  - | TransStmtCtxt (HsStmtContext p)
  - | ArrowExpr
- data HsMatchContext p
  - = FunRhs {
    - mc_fun :: LIdP (NoGhcTc p)
    - mc_fixity :: LexicalFixity
    - mc_strictness :: SrcStrictness
    }
  - | LambdaExpr
  - | CaseAlt
  - | LamCaseAlt LamCaseVariant
  - | IfAlt
  - | ArrowMatchCtxt HsArrowMatchContext
  - | PatBindRhs
  - | PatBindGuards
  - | RecUpd
  - | StmtCtxt (HsStmtContext p)
  - | ThPatSplice
  - | ThPatQuote
  - | PatSyn
- data ArithSeqInfo id
  - = From (LHsExpr id)
  - | FromThen (LHsExpr id) (LHsExpr id)
  - | FromTo (LHsExpr id) (LHsExpr id)
  - | FromThenTo (LHsExpr id) (LHsExpr id) (LHsExpr id)
- data HsQuote p
  - = ExpBr (XExpBr p) (LHsExpr p)
  - | PatBr (XPatBr p) (LPat p)
  - | DecBrL (XDecBrL p) [LHsDecl p]
  - | DecBrG (XDecBrG p) (HsGroup p)
  - | TypBr (XTypBr p) (LHsType p)
  - | VarBr (XVarBr p) Bool (LIdP p)
  - | XQuote !(XXQuote p)
- data ApplicativeArg idL
  - = ApplicativeArgOne {
    - xarg_app_arg_one :: XApplicativeArgOne idL
    - app_arg_pattern :: LPat idL
    - arg_expr :: LHsExpr idL
    - is_body_stmt :: Bool
    }
  - | ApplicativeArgMany {
    - xarg_app_arg_many :: XApplicativeArgMany idL
    - app_stmts :: [ExprLStmt idL]
    - final_expr :: HsExpr idL
    - bv_pattern :: LPat idL
    - stmt_context :: HsDoFlavour
    }
  - | XApplicativeArg !(XXApplicativeArg idL)
- type FailOperator id = Maybe (SyntaxExpr id)
- data TransForm
  - = ThenForm
  - | GroupForm
- data StmtLR idL idR body
  - = LastStmt (XLastStmt idL idR body) body (Maybe Bool) (SyntaxExpr idR)
  - | BindStmt (XBindStmt idL idR body) (LPat idL) body
  - | ApplicativeStmt (XApplicativeStmt idL idR body) [(SyntaxExpr idR, ApplicativeArg idL)] (Maybe (SyntaxExpr idR))
  - | BodyStmt (XBodyStmt idL idR body) body (SyntaxExpr idR) (SyntaxExpr idR)
  - | LetStmt (XLetStmt idL idR body) (HsLocalBindsLR idL idR)
  - | ParStmt (XParStmt idL idR body) [ParStmtBlock idL idR] (HsExpr idR) (SyntaxExpr idR)
  - | TransStmt {
    - trS_ext :: XTransStmt idL idR body
    - trS_form :: TransForm
    - trS_stmts :: [ExprLStmt idL]
    - trS_bndrs :: [(IdP idR, IdP idR)]
    - trS_using :: LHsExpr idR
    - trS_by :: Maybe (LHsExpr idR)
    - trS_ret :: SyntaxExpr idR
    - trS_bind :: SyntaxExpr idR
    - trS_fmap :: HsExpr idR
    }
  - | RecStmt {
    - recS_ext :: XRecStmt idL idR body
    - recS_stmts :: XRec idR [LStmtLR idL idR body]
    - recS_later_ids :: [IdP idR]
    - recS_rec_ids :: [IdP idR]
    - recS_bind_fn :: SyntaxExpr idR
    - recS_ret_fn :: SyntaxExpr idR
    - recS_mfix_fn :: SyntaxExpr idR
    }
  - | XStmtLR !(XXStmtLR idL idR body)
- type GhciStmt id = Stmt id (LHsExpr id)
- type GhciLStmt id = LStmt id (LHsExpr id)
- type GuardStmt id = Stmt id (LHsExpr id)
- type GuardLStmt id = LStmt id (LHsExpr id)
- type ExprStmt id = Stmt id (LHsExpr id)
- type ExprLStmt id = LStmt id (LHsExpr id)
- type CmdStmt id = Stmt id (LHsCmd id)
- type CmdLStmt id = LStmt id (LHsCmd id)
- type LStmtLR idL idR body = XRec idL (StmtLR idL idR body)
- type LStmt id body = XRec id (StmtLR id id body)
- data GRHS p body
  - = GRHS (XCGRHS p body) [GuardLStmt p] body
  - | XGRHS !(XXGRHS p body)
- type LGRHS id body = XRec id (GRHS id body)
- type LMatch id body = XRec id (Match id body)
- type HsRecordBinds p = HsRecFields p (LHsExpr p)
- type LHsCmdTop p = XRec p (HsCmdTop p)
- data HsArrAppType
  - = HsHigherOrderApp
  - | HsFirstOrderApp
- data HsCmd id
  - = HsCmdArrApp (XCmdArrApp id) (LHsExpr id) (LHsExpr id) HsArrAppType Bool
  - | HsCmdArrForm (XCmdArrForm id) (LHsExpr id) LexicalFixity (Maybe Fixity) [LHsCmdTop id]
  - | HsCmdApp (XCmdApp id) (LHsCmd id) (LHsExpr id)
  - | HsCmdLam (XCmdLam id) (MatchGroup id (LHsCmd id))
  - | HsCmdPar (XCmdPar id) !(LHsToken "(" id) (LHsCmd id) !(LHsToken ")" id)
  - | HsCmdCase (XCmdCase id) (LHsExpr id) (MatchGroup id (LHsCmd id))
  - | HsCmdLamCase (XCmdLamCase id) LamCaseVariant (MatchGroup id (LHsCmd id))
  - | HsCmdIf (XCmdIf id) (SyntaxExpr id) (LHsExpr id) (LHsCmd id) (LHsCmd id)
  - | HsCmdLet (XCmdLet id) !(LHsToken "let" id) (HsLocalBinds id) !(LHsToken "in" id) (LHsCmd id)
  - | HsCmdDo (XCmdDo id) (XRec id [CmdLStmt id])
  - | XCmd !(XXCmd id)
- type LHsCmd id = XRec id (HsCmd id)
- data LamCaseVariant
  - = LamCase
  - | LamCases
- data HsTupArg id
  - = Present (XPresent id) (LHsExpr id)
  - | Missing (XMissing id)
  - | XTupArg !(XXTupArg id)
- type LHsTupArg id = XRec id (HsTupArg id)
- data HsPragE p
  - = HsPragSCC (XSCC p) StringLiteral
  - | XHsPragE !(XXPragE p)
- data DotFieldOcc p
  - = DotFieldOcc {
    - dfoExt :: XCDotFieldOcc p
    - dfoLabel :: XRec p FieldLabelString
    }
  - | XDotFieldOcc !(XXDotFieldOcc p)
- data LHsRecUpdFields p where
  - RegularRecUpdFields :: forall p. {..} -> LHsRecUpdFields p
  - OverloadedRecUpdFields :: forall p. {..} -> LHsRecUpdFields p
- type LHsRecUpdProj p = XRec p (RecUpdProj p)
- type RecUpdProj p = RecProj p (LHsExpr p)
- type LHsRecProj p arg = XRec p (RecProj p arg)
- type RecProj p arg = HsFieldBind (LFieldLabelStrings p) arg
- newtype FieldLabelStrings p = FieldLabelStrings [XRec p (DotFieldOcc p)]
- type LFieldLabelStrings p = XRec p (FieldLabelStrings p)
- isInfixMatch :: Match id body -> Bool
- isPatSynCtxt :: HsMatchContext p -> Bool
- qualifiedDoModuleName_maybe :: HsStmtContext p -> Maybe ModuleName
- isComprehensionContext :: HsStmtContext id -> Bool
- isDoComprehensionContext :: HsDoFlavour -> Bool
- isMonadStmtContext :: HsStmtContext id -> Bool
- isMonadDoStmtContext :: HsDoFlavour -> Bool
- isMonadCompContext :: HsStmtContext id -> Bool
- isMonadDoCompContext :: HsDoFlavour -> Bool
- data HsModule p
  - = HsModule {
    - hsmodExt :: XCModule p
    - hsmodName :: Maybe (XRec p ModuleName)
    - hsmodExports :: Maybe (XRec p [LIE p])
    - hsmodImports :: [LImportDecl p]
    - hsmodDecls :: [LHsDecl p]
    }
  - | XModule !(XXModule p)
- module GHC.Rename.Names
- module GHC.Rename.Splice
- module GHC.Tc.Instance.Family
- module GHC.Tc.Module
- module GHC.Tc.Types
- data Role
  - = Nominal
  - | Representational
  - | Phantom
- data LeftOrRight
  - = CLeft
  - | CRight
- pickLR :: LeftOrRight -> (a, a) -> a
- data CoercionHole
- data QuoteWrapper = QuoteWrapper EvVar Type
- data HoleExprRef = HER (IORef EvTerm) TcType Unique
- data EvCallStack
  - = EvCsEmpty
  - | EvCsPushCall FastString RealSrcSpan EvExpr
- data EvTypeable
  - = EvTypeableTyCon TyCon [EvTerm]
  - | EvTypeableTyApp EvTerm EvTerm
  - | EvTypeableTrFun EvTerm EvTerm EvTerm
  - | EvTypeableTyLit EvTerm
- data EvTerm
  - = EvExpr EvExpr
  - | EvTypeable Type EvTypeable
  - | EvFun {
    - et_tvs :: [TyVar]
    - et_given :: [EvVar]
    - et_binds :: TcEvBinds
    - et_body :: EvVar
    }
- type EvExpr = CoreExpr
- data EvBind = EvBind {
  - eb_lhs :: EvVar
  - eb_rhs :: EvTerm
  - eb_info :: EvBindInfo
  }
- data EvBindInfo
  - = EvBindGiven
  - | EvBindWanted {
    - ebi_canonical :: Canonical
    }
- newtype EvBindMap = EvBindMap {
  - ev_bind_varenv :: DVarEnv EvBind
  }
- data EvBindsVar
  - = EvBindsVar {
    - ebv_uniq :: Unique
    - ebv_binds :: IORef EvBindMap
    - ebv_tcvs :: IORef CoVarSet
    }
  - | CoEvBindsVar {
    - ebv_uniq :: Unique
    - ebv_tcvs :: IORef CoVarSet
    }
- data TcEvBinds
  - = TcEvBinds EvBindsVar
  - | EvBinds (Bag EvBind)
- data HsWrapper
  - = WpHole
  - | WpCompose HsWrapper HsWrapper
  - | WpFun HsWrapper HsWrapper (Scaled TcTypeFRR)
  - | WpCast TcCoercionR
  - | WpEvLam EvVar
  - | WpEvApp EvTerm
  - | WpTyLam TyVar
  - | WpTyApp KindOrType
  - | WpLet TcEvBinds
  - | WpMultCoercion Coercion
- type TcMCoercionR = MCoercionR
- type TcMCoercionN = MCoercionN
- type TcMCoercion = MCoercion
- type TcCoercionP = CoercionP
- type TcCoercionR = CoercionR
- type TcCoercionN = CoercionN
- type TcCoercion = Coercion
- maybeSymCo :: SwapFlag -> TcCoercion -> TcCoercion
- mkWpFun :: HsWrapper -> HsWrapper -> Scaled TcTypeFRR -> TcType -> HsWrapper
- mkWpEta :: [Id] -> HsWrapper -> HsWrapper
- mkWpCastR :: TcCoercionR -> HsWrapper
- mkWpCastN :: TcCoercionN -> HsWrapper
- mkWpTyApps :: [Type] -> HsWrapper
- mkWpEvApps :: [EvTerm] -> HsWrapper
- mkWpEvVarApps :: [EvVar] -> HsWrapper
- mkWpTyLams :: [TyVar] -> HsWrapper
- mkWpEvLams :: [Var] -> HsWrapper
- mkWpLet :: TcEvBinds -> HsWrapper
- idHsWrapper :: HsWrapper
- isIdHsWrapper :: HsWrapper -> Bool
- hsWrapDictBinders :: HsWrapper -> Bag DictId
- collectHsWrapBinders :: HsWrapper -> ([Var], HsWrapper)
- isCoEvBindsVar :: EvBindsVar -> Bool
- emptyEvBindMap :: EvBindMap
- extendEvBinds :: EvBindMap -> EvBind -> EvBindMap
- isEmptyEvBindMap :: EvBindMap -> Bool
- lookupEvBind :: EvBindMap -> EvVar -> Maybe EvBind
- evBindMapBinds :: EvBindMap -> Bag EvBind
- foldEvBindMap :: (EvBind -> a -> a) -> a -> EvBindMap -> a
- nonDetStrictFoldEvBindMap :: (EvBind -> a -> a) -> a -> EvBindMap -> a
- filterEvBindMap :: (EvBind -> Bool) -> EvBindMap -> EvBindMap
- evBindMapToVarSet :: EvBindMap -> VarSet
- varSetMinusEvBindMap :: VarSet -> EvBindMap -> VarSet
- evBindVar :: EvBind -> EvVar
- mkWantedEvBind :: EvVar -> Canonical -> EvTerm -> EvBind
- mkGivenEvBind :: EvVar -> EvTerm -> EvBind
- evId :: EvId -> EvExpr
- evCoercion :: TcCoercion -> EvTerm
- evCast :: EvExpr -> TcCoercion -> EvTerm
- evDFunApp :: DFunId -> [Type] -> [EvExpr] -> EvTerm
- evDataConApp :: DataCon -> [Type] -> [EvExpr] -> EvTerm
- evSelector :: Id -> [Type] -> [EvExpr] -> EvExpr
- evTypeable :: Type -> EvTypeable -> EvTerm
- mkEvCast :: EvExpr -> TcCoercion -> EvTerm
- mkEvScSelectors :: Class -> [TcType] -> [(TcPredType, EvExpr)]
- emptyTcEvBinds :: TcEvBinds
- isEmptyTcEvBinds :: TcEvBinds -> Bool
- evTermCoercion_maybe :: EvTerm -> Maybe TcCoercion
- evTermCoercion :: EvTerm -> TcCoercion
- findNeededEvVars :: EvBindMap -> VarSet -> VarSet
- evVarsOfTerm :: EvTerm -> VarSet
- pprHsWrapper :: HsWrapper -> (Bool -> SDoc) -> SDoc
- unwrapIP :: Type -> CoercionR
- wrapIP :: Type -> CoercionR
- quoteWrapperTyVarTy :: QuoteWrapper -> Type
- applyQuoteWrapper :: QuoteWrapper -> HsWrapper
- module GHC.Tc.Utils.Env
- newName :: OccName -> TcM Name
- setEnv :: env' -> IOEnv env' a -> IOEnv env a
- getEnv :: IOEnv env env
- foldrM :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m b
- foldlM :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b
- mapAndUnzipM :: Applicative m => (a -> m (b, c)) -> [a] -> m ([b], [c])
- newUnique :: TcRnIf gbl lcl Unique
- data Env gbl lcl = Env {
  - env_top :: !HscEnv
  - env_um :: !Char
  - env_gbl :: gbl
  - env_lcl :: lcl
  }
- newMutVar :: a -> IOEnv env (IORef a)
- readMutVar :: IORef a -> IOEnv env a
- writeMutVar :: IORef a -> a -> IOEnv env ()
- orM :: Monad m => m Bool -> m Bool -> m Bool
- partitionM :: Monad m => (a -> m Bool) -> [a] -> m ([a], [a])
- whenM :: Monad m => m Bool -> m () -> m ()
- unlessM :: Monad m => m Bool -> m () -> m ()
- data TcGblEnv = TcGblEnv {
  - tcg_mod :: Module
  - tcg_semantic_mod :: Module
  - tcg_src :: HscSource
  - tcg_rdr_env :: GlobalRdrEnv
  - tcg_default :: Maybe [Type]
  - tcg_fix_env :: FixityEnv
  - tcg_type_env :: TypeEnv
  - tcg_type_env_var :: KnotVars (IORef TypeEnv)
  - tcg_inst_env :: !InstEnv
  - tcg_fam_inst_env :: !FamInstEnv
  - tcg_ann_env :: AnnEnv
  - tcg_exports :: [AvailInfo]
  - tcg_imports :: ImportAvails
  - tcg_dus :: DefUses
  - tcg_used_gres :: TcRef [GlobalRdrElt]
  - tcg_keep :: TcRef NameSet
  - tcg_th_used :: TcRef Bool
  - tcg_th_splice_used :: TcRef Bool
  - tcg_th_needed_deps :: TcRef ([Linkable], PkgsLoaded)
  - tcg_dfun_n :: TcRef OccSet
  - tcg_merged :: [(Module, Fingerprint)]
  - tcg_rn_exports :: Maybe [(LIE GhcRn, Avails)]
  - tcg_rn_imports :: [LImportDecl GhcRn]
  - tcg_rn_decls :: Maybe (HsGroup GhcRn)
  - tcg_dependent_files :: TcRef [FilePath]
  - tcg_th_topdecls :: TcRef [LHsDecl GhcPs]
  - tcg_th_foreign_files :: TcRef [(ForeignSrcLang, FilePath)]
  - tcg_th_topnames :: TcRef NameSet
  - tcg_th_modfinalizers :: TcRef [(TcLclEnv, ThModFinalizers)]
  - tcg_th_coreplugins :: TcRef [String]
  - tcg_th_state :: TcRef (Map TypeRep Dynamic)
  - tcg_th_remote_state :: TcRef (Maybe (ForeignRef (IORef QState)))
  - tcg_th_docs :: TcRef THDocs
  - tcg_ev_binds :: Bag EvBind
  - tcg_tr_module :: Maybe Id
  - tcg_binds :: LHsBinds GhcTc
  - tcg_sigs :: NameSet
  - tcg_imp_specs :: [LTcSpecPrag]
  - tcg_warns :: Warnings GhcRn
  - tcg_anns :: [Annotation]
  - tcg_tcs :: [TyCon]
  - tcg_ksigs :: NameSet
  - tcg_insts :: [ClsInst]
  - tcg_fam_insts :: [FamInst]
  - tcg_rules :: [LRuleDecl GhcTc]
  - tcg_fords :: [LForeignDecl GhcTc]
  - tcg_patsyns :: [PatSyn]
  - tcg_doc_hdr :: Maybe (LHsDoc GhcRn)
  - tcg_hpc :: !AnyHpcUsage
  - tcg_self_boot :: SelfBootInfo
  - tcg_main :: Maybe Name
  - tcg_safe_infer :: TcRef Bool
  - tcg_safe_infer_reasons :: TcRef (Messages TcRnMessage)
  - tcg_tc_plugin_solvers :: [TcPluginSolver]
  - tcg_tc_plugin_rewriters :: UniqFM TyCon [TcPluginRewriter]
  - tcg_defaulting_plugins :: [FillDefaulting]
  - tcg_hf_plugins :: [HoleFitPlugin]
  - tcg_top_loc :: RealSrcSpan
  - tcg_static_wc :: TcRef WantedConstraints
  - tcg_complete_matches :: !CompleteMatches
  - tcg_cc_st :: TcRef CostCentreState
  - tcg_next_wrapper_num :: TcRef (ModuleEnv Int)
  }
- data ForeignSrcLang
  - = LangC
  - | LangCxx
  - | LangObjc
  - | LangObjcxx
  - | LangAsm
  - | LangJs
  - | RawObject
- data TcLclEnv = TcLclEnv {
  - tcl_lcl_ctxt :: !TcLclCtxt
  - tcl_usage :: TcRef UsageEnv
  - tcl_lie :: TcRef WantedConstraints
  - tcl_errs :: TcRef (Messages TcRnMessage)
  }
- zipWith3M :: Monad m => (a -> b -> c -> m d) -> [a] -> [b] -> [c] -> m [d]
- zipWith3M_ :: Monad m => (a -> b -> c -> m d) -> [a] -> [b] -> [c] -> m ()
- zipWith4M :: Monad m => (a -> b -> c -> d -> m e) -> [a] -> [b] -> [c] -> [d] -> m [e]
- zipWithAndUnzipM :: Monad m => (a -> b -> m (c, d)) -> [a] -> [b] -> m ([c], [d])
- zipWith3MNE :: Monad m => (a -> b -> c -> m d) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> m (NonEmpty d)
- mapAndUnzip3M :: Monad m => (a -> m (b, c, d)) -> [a] -> m ([b], [c], [d])
- mapAndUnzip4M :: Monad m => (a -> m (b, c, d, e)) -> [a] -> m ([b], [c], [d], [e])
- mapAndUnzip5M :: Monad m => (a -> m (b, c, d, e, f)) -> [a] -> m ([b], [c], [d], [e], [f])
- mapAccumLM :: (Monad m, Traversable t) => (acc -> x -> m (acc, y)) -> acc -> t x -> m (acc, t y)
- mapSndM :: (Applicative m, Traversable f) => (b -> m c) -> f (a, b) -> m (f (a, c))
- foldlM_ :: (Monad m, Foldable t) => (a -> b -> m a) -> a -> t b -> m ()
- filterOutM :: Applicative m => (a -> m Bool) -> [a] -> m [a]
- type TcRef a = IORef a
- newTcRef :: MonadIO m => a -> m (TcRef a)
- readTcRef :: MonadIO m => TcRef a -> m a
- writeTcRef :: MonadIO m => TcRef a -> a -> m ()
- updTcRef :: MonadIO m => TcRef a -> (a -> a) -> m ()
- updTcRefM :: MonadIO m => TcRef a -> (a -> m a) -> m ()
- data PromotionErr
  - = TyConPE
  - | ClassPE
  - | FamDataConPE
  - | ConstrainedDataConPE ThetaType
  - | PatSynPE
  - | RecDataConPE
  - | TermVariablePE
  - | NoDataKindsDC
  - | TypeVariablePE
- pprPECategory :: PromotionErr -> SDoc
- peCategory :: PromotionErr -> String
- data ImportAvails = ImportAvails {
  - imp_mods :: ImportedMods
  - imp_direct_dep_mods :: InstalledModuleEnv ModuleNameWithIsBoot
  - imp_dep_direct_pkgs :: Set UnitId
  - imp_trust_own_pkg :: Bool
  - imp_trust_pkgs :: Set UnitId
  - imp_boot_mods :: InstalledModuleEnv ModuleNameWithIsBoot
  - imp_sig_mods :: [ModuleName]
  - imp_orphs :: [Module]
  - imp_finsts :: [Module]
  }
- type ClosedTypeId = Bool
- type RhsNames = NameSet
- data IsGroupClosed = IsGroupClosed (NameEnv RhsNames) ClosedTypeId
- data IdBindingInfo
  - = NotLetBound
  - | ClosedLet
  - | NonClosedLet RhsNames ClosedTypeId
- data TcTyThing
  - = AGlobal TyThing
  - | ATcId {
    - tct_id :: Id
    - tct_info :: IdBindingInfo
    }
  - | ATyVar Name TcTyVar
  - | ATcTyCon TyCon
  - | APromotionErr PromotionErr
- data TcPatSynInfo = TPSI {
  - patsig_name :: Name
  - patsig_implicit_bndrs :: [InvisTVBinder]
  - patsig_univ_bndrs :: [InvisTVBinder]
  - patsig_req :: TcThetaType
  - patsig_ex_bndrs :: [InvisTVBinder]
  - patsig_prov :: TcThetaType
  - patsig_body_ty :: TcSigmaType
  }
- data TcIdSigInst = TISI {
  - sig_inst_sig :: TcIdSigInfo
  - sig_inst_skols :: [(Name, InvisTVBinder)]
  - sig_inst_theta :: TcThetaType
  - sig_inst_tau :: TcSigmaType
  - sig_inst_wcs :: [(Name, TcTyVar)]
  - sig_inst_wcx :: Maybe TcType
  }
- data TcIdSigInfo
  - = CompleteSig {
    - sig_bndr :: TcId
    - sig_ctxt :: UserTypeCtxt
    - sig_loc :: SrcSpan
    }
  - | PartialSig {
    - psig_name :: Name
    - psig_hs_ty :: LHsSigWcType GhcRn
    - sig_ctxt :: UserTypeCtxt
    - sig_loc :: SrcSpan
    }
- data TcSigInfo
  - = TcIdSig TcIdSigInfo
  - | TcPatSynSig TcPatSynInfo
- type TcSigFun = Name -> Maybe TcSigInfo
- data TcBinder
  - = TcIdBndr TcId TopLevelFlag
  - | TcIdBndr_ExpType Name ExpType TopLevelFlag
  - | TcTvBndr Name TyVar
- type TcId = Id
- type TcBinderStack = [TcBinder]
- isPartialSig :: TcIdSigInst -> Bool
- hasCompleteSig :: TcSigFun -> Name -> Bool
- tcTyThingTyCon_maybe :: TcTyThing -> Maybe TyCon
- pprTcTyThingCategory :: TcTyThing -> SDoc
- tcTyThingCategory :: TcTyThing -> String
- type ErrCtxt = (Bool, TidyEnv -> ZonkM (TidyEnv, SDoc))
- type ThLevel = Int
- data PendingStuff
  - = RnPendingUntyped (TcRef [PendingRnSplice])
  - | RnPendingTyped
  - | TcPending (TcRef [PendingTcSplice]) (TcRef WantedConstraints) QuoteWrapper
- data ThStage
  - = Splice SpliceType
  - | RunSplice (TcRef [ForeignRef (Q ())])
  - | Comp
  - | Brack ThStage PendingStuff
- data SpliceOrBracket
  - = IsSplice
  - | IsBracket
- data SpliceType
  - = Typed
  - | Untyped
- topStage :: ThStage
- topAnnStage :: ThStage
- topSpliceStage :: ThStage
- impLevel :: ThLevel
- outerLevel :: ThLevel
- thLevel :: ThStage -> ThLevel
- data TcRnMessage
- data ArrowCtxt
  - = NoArrowCtxt
  - | ArrowCtxt LocalRdrEnv (TcRef WantedConstraints)
- type ThBindEnv = NameEnv (TopLevelFlag, ThLevel)
- type TcTypeEnv = NameEnv TcTyThing
- data TcLclCtxt = TcLclCtxt {
  - tcl_loc :: RealSrcSpan
  - tcl_ctxt :: [ErrCtxt]
  - tcl_in_gen_code :: Bool
  - tcl_tclvl :: TcLevel
  - tcl_bndrs :: TcBinderStack
  - tcl_rdr :: LocalRdrEnv
  - tcl_th_ctxt :: ThStage
  - tcl_th_bndrs :: ThBindEnv
  - tcl_arrow_ctxt :: ArrowCtxt
  - tcl_env :: TcTypeEnv
  }
- setLclEnvTcLevel :: TcLevel -> TcLclEnv -> TcLclEnv
- getLclEnvTcLevel :: TcLclEnv -> TcLevel
- setLclEnvLoc :: RealSrcSpan -> TcLclEnv -> TcLclEnv
- getLclEnvLoc :: TcLclEnv -> RealSrcSpan
- lclEnvInGeneratedCode :: TcLclEnv -> Bool
- modifyLclCtxt :: (TcLclCtxt -> TcLclCtxt) -> TcLclEnv -> TcLclEnv
- type CompleteMatches = [CompleteMatch]
- data CompleteMatch
- getPlatform :: TcRnIf a b Platform
- addErr :: TcRnMessage -> TcRn ()
- data IOEnvFailure = IOEnvFailure
- data IOEnv env a
- failM :: IOEnv env a
- failWithM :: String -> IOEnv env a
- runIOEnv :: env -> IOEnv env a -> IO a
- fixM :: (a -> IOEnv env a) -> IOEnv env a
- tryM :: IOEnv env r -> IOEnv env (Either IOEnvFailure r)
- tryAllM :: IOEnv env r -> IOEnv env (Either SomeException r)
- tryMostM :: IOEnv env r -> IOEnv env (Either SomeException r)
- unsafeInterleaveM :: IOEnv env a -> IOEnv env a
- uninterruptibleMaskM_ :: IOEnv env a -> IOEnv env a
- updMutVar :: IORef a -> (a -> a) -> IOEnv env ()
- atomicUpdMutVar :: IORef a -> (a -> (a, b)) -> IOEnv env b
- atomicUpdMutVar' :: IORef a -> (a -> (a, b)) -> IOEnv env b
- updEnv :: (env -> env') -> IOEnv env' a -> IOEnv env a
- getNamePprCtx :: TcRn NamePprCtx
- getSrcSpanM :: TcRn SrcSpan
- type THDocs = Map DocLoc (HsDoc GhcRn)
- data DocLoc
  - = DeclDoc Name
  - | ArgDoc Name Int
  - | InstDoc Name
  - | ModuleDoc
- type RoleAnnotEnv = NameEnv (LRoleAnnotDecl GhcRn)
- data DefaultingPlugin = DefaultingPlugin {
  - dePluginInit :: TcPluginM s
  - dePluginRun :: s -> FillDefaulting
  - dePluginStop :: s -> TcPluginM ()
  }
- type FillDefaulting = WantedConstraints -> TcPluginM DefaultingPluginResult
- type DefaultingPluginResult = [DefaultingProposal]
- data DefaultingProposal = DefaultingProposal {
  - deProposalTyVar :: TcTyVar
  - deProposalCandidates :: [Type]
  - deProposalCts :: [Ct]
  }
- data TcPluginRewriteResult
  - = TcPluginNoRewrite
  - | TcPluginRewriteTo {
    - tcPluginReduction :: !Reduction
    - tcRewriterNewWanteds :: [Ct]
    }
- data TcPluginSolveResult where
  - TcPluginSolveResult {
    - tcPluginInsolubleCts :: [Ct]
    - tcPluginSolvedCts :: [(EvTerm, Ct)]
    - tcPluginNewCts :: [Ct]
    }
  - pattern TcPluginOk :: [(EvTerm, Ct)] -> [Ct] -> TcPluginSolveResult
  - pattern TcPluginContradiction :: [Ct] -> TcPluginSolveResult
- data TcPlugin = TcPlugin {
  - tcPluginInit :: TcPluginM s
  - tcPluginSolve :: s -> TcPluginSolver
  - tcPluginRewrite :: s -> UniqFM TyCon TcPluginRewriter
  - tcPluginStop :: s -> TcPluginM ()
  }
- data TcPluginM a
- type TcPluginRewriter = RewriteEnv -> [Ct] -> [TcType] -> TcPluginM TcPluginRewriteResult
- type TcPluginSolver = EvBindsVar -> [Ct] -> [Ct] -> TcPluginM TcPluginSolveResult
- data SelfBootInfo
  - = NoSelfBoot
  - | SelfBoot {
    - sb_mds :: ModDetails
    }
- data FrontendResult = FrontendTypecheck TcGblEnv
- data IfLclEnv = IfLclEnv {
  - if_mod :: !Module
  - if_boot :: IsBootInterface
  - if_loc :: SDoc
  - if_nsubst :: Maybe NameShape
  - if_implicits_env :: Maybe TypeEnv
  - if_tv_env :: FastStringEnv TyVar
  - if_id_env :: FastStringEnv Id
  }
- data IfGblEnv = IfGblEnv {
  - if_doc :: SDoc
  - if_rec_types :: KnotVars (IfG TypeEnv)
  }
- data RewriteEnv = RE {
  - re_loc :: !CtLoc
  - re_flavour :: !CtFlavour
  - re_eq_rel :: !EqRel
  - re_rewriters :: !(TcRef RewriterSet)
  }
- type TcM = TcRn
- type RnM = TcRn
- type IfL = IfM IfLclEnv
- type IfG = IfM ()
- type IfM lcl = TcRnIf IfGblEnv lcl
- type TcRn = TcRnIf TcGblEnv TcLclEnv
- type TcRnIf a b = IOEnv (Env a b)
- data NameShape = NameShape {
  - ns_mod_name :: ModuleName
  - ns_exports :: [AvailInfo]
  - ns_map :: OccEnv Name
  }
- tcVisibleOrphanMods :: TcGblEnv -> ModuleSet
- bootExports :: SelfBootInfo -> NameSet
- removeBindingShadowing :: HasOccName a => [a] -> [a]
- mkModDeps :: Set (UnitId, ModuleNameWithIsBoot) -> InstalledModuleEnv ModuleNameWithIsBoot
- emptyImportAvails :: ImportAvails
- plusImportAvails :: ImportAvails -> ImportAvails -> ImportAvails
- unsafeTcPluginTcM :: TcM a -> TcPluginM a
- mkRoleAnnotEnv :: [LRoleAnnotDecl GhcRn] -> RoleAnnotEnv
- emptyRoleAnnotEnv :: RoleAnnotEnv
- lookupRoleAnnot :: RoleAnnotEnv -> Name -> Maybe (LRoleAnnotDecl GhcRn)
- getRoleAnnots :: [Name] -> RoleAnnotEnv -> [LRoleAnnotDecl GhcRn]
- lintGblEnv :: Logger -> DynFlags -> TcGblEnv -> TcM ()
- data IsExtraConstraint
  - = YesExtraConstraint
  - | NoExtraConstraint
- initTc :: HscEnv -> HscSource -> Bool -> Module -> RealSrcSpan -> TcM r -> IO (Messages TcRnMessage, Maybe r)
- initTcWithGbl :: HscEnv -> TcGblEnv -> RealSrcSpan -> TcM r -> IO (Messages TcRnMessage, Maybe r)
- initTcInteractive :: HscEnv -> TcM a -> IO (Messages TcRnMessage, Maybe a)
- initTcRnIf :: Char -> HscEnv -> gbl -> lcl -> TcRnIf gbl lcl a -> IO a
- discardResult :: TcM a -> TcM ()
- getTopEnv :: TcRnIf gbl lcl HscEnv
- updTopEnv :: (HscEnv -> HscEnv) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- getGblEnv :: TcRnIf gbl lcl gbl
- updGblEnv :: (gbl -> gbl) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- setGblEnv :: gbl' -> TcRnIf gbl' lcl a -> TcRnIf gbl lcl a
- getLclEnv :: TcRnIf gbl lcl lcl
- updLclEnv :: (lcl -> lcl) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- updLclCtxt :: (TcLclCtxt -> TcLclCtxt) -> TcRnIf gbl TcLclEnv a -> TcRnIf gbl TcLclEnv a
- setLclEnv :: lcl' -> TcRnIf gbl lcl' a -> TcRnIf gbl lcl a
- restoreLclEnv :: TcLclEnv -> TcRnIf gbl TcLclEnv a -> TcRnIf gbl TcLclEnv a
- getEnvs :: TcRnIf gbl lcl (gbl, lcl)
- setEnvs :: (gbl', lcl') -> TcRnIf gbl' lcl' a -> TcRnIf gbl lcl a
- updEnvs :: ((gbl, lcl) -> (gbl, lcl)) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- restoreEnvs :: (TcGblEnv, TcLclEnv) -> TcRn a -> TcRn a
- xoptM :: Extension -> TcRnIf gbl lcl Bool
- doptM :: DumpFlag -> TcRnIf gbl lcl Bool
- goptM :: GeneralFlag -> TcRnIf gbl lcl Bool
- woptM :: WarningFlag -> TcRnIf gbl lcl Bool
- setXOptM :: Extension -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- unsetXOptM :: Extension -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- unsetGOptM :: GeneralFlag -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- unsetWOptM :: WarningFlag -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- whenDOptM :: DumpFlag -> TcRnIf gbl lcl () -> TcRnIf gbl lcl ()
- whenGOptM :: GeneralFlag -> TcRnIf gbl lcl () -> TcRnIf gbl lcl ()
- whenWOptM :: WarningFlag -> TcRnIf gbl lcl () -> TcRnIf gbl lcl ()
- whenXOptM :: Extension -> TcRnIf gbl lcl () -> TcRnIf gbl lcl ()
- unlessXOptM :: Extension -> TcRnIf gbl lcl () -> TcRnIf gbl lcl ()
- getGhcMode :: TcRnIf gbl lcl GhcMode
- withoutDynamicNow :: TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- updTopFlags :: (DynFlags -> DynFlags) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a
- getEpsVar :: TcRnIf gbl lcl (TcRef ExternalPackageState)
- getEps :: TcRnIf gbl lcl ExternalPackageState
- updateEps :: (ExternalPackageState -> (ExternalPackageState, a)) -> TcRnIf gbl lcl a
- updateEps_ :: (ExternalPackageState -> ExternalPackageState) -> TcRnIf gbl lcl ()
- getHpt :: TcRnIf gbl lcl HomePackageTable
- getEpsAndHug :: TcRnIf gbl lcl (ExternalPackageState, HomeUnitGraph)
- withException :: MonadIO m => SDocContext -> m (MaybeErr SDoc a) -> m a
- withIfaceErr :: MonadIO m => SDocContext -> m (MaybeErr MissingInterfaceError a) -> m a
- newArrowScope :: TcM a -> TcM a
- escapeArrowScope :: TcM a -> TcM a
- newUniqueSupply :: TcRnIf gbl lcl UniqSupply
- cloneLocalName :: Name -> TcM Name
- newNameAt :: OccName -> SrcSpan -> TcM Name
- newSysName :: OccName -> TcRnIf gbl lcl Name
- newSysLocalId :: FastString -> Mult -> TcType -> TcRnIf gbl lcl TcId
- newSysLocalIds :: FastString -> [Scaled TcType] -> TcRnIf gbl lcl [TcId]
- traceTc :: String -> SDoc -> TcRn ()
- traceRn :: String -> SDoc -> TcRn ()
- traceOptTcRn :: DumpFlag -> SDoc -> TcRn ()
- dumpOptTcRn :: DumpFlag -> String -> DumpFormat -> SDoc -> TcRn ()
- dumpTcRn :: Bool -> DumpFlag -> String -> DumpFormat -> SDoc -> TcRn ()
- printForUserTcRn :: SDoc -> TcRn ()
- traceIf :: SDoc -> TcRnIf m n ()
- traceOptIf :: DumpFlag -> SDoc -> TcRnIf m n ()
- getIsGHCi :: TcRn Bool
- getGHCiMonad :: TcRn Name
- getInteractivePrintName :: TcRn Name
- tcIsHsBootOrSig :: TcRn Bool
- tcHscSource :: TcRn HscSource
- tcIsHsig :: TcRn Bool
- tcSelfBootInfo :: TcRn SelfBootInfo
- getGlobalRdrEnv :: TcRn GlobalRdrEnv
- getRdrEnvs :: TcRn (GlobalRdrEnv, LocalRdrEnv)
- getImports :: TcRn ImportAvails
- getFixityEnv :: TcRn FixityEnv
- extendFixityEnv :: [(Name, FixItem)] -> RnM a -> RnM a
- getDeclaredDefaultTys :: TcRn (Maybe [Type])
- addDependentFiles :: [FilePath] -> TcRn ()
- inGeneratedCode :: TcRn Bool
- setSrcSpan :: SrcSpan -> TcRn a -> TcRn a
- setInGeneratedCode :: TcRn a -> TcRn a
- setSrcSpanA :: SrcSpanAnn' ann -> TcRn a -> TcRn a
- addLocM :: (a -> TcM b) -> Located a -> TcM b
- addLocMA :: (a -> TcM b) -> GenLocated (SrcSpanAnn' ann) a -> TcM b
- wrapLocM :: (a -> TcM b) -> Located a -> TcM (Located b)
- wrapLocAM :: (a -> TcM b) -> LocatedAn an a -> TcM (Located b)
- wrapLocMA :: (a -> TcM b) -> GenLocated (SrcSpanAnn' ann) a -> TcRn (GenLocated (SrcSpanAnn' ann) b)
- wrapLocFstM :: (a -> TcM (b, c)) -> Located a -> TcM (Located b, c)
- wrapLocFstMA :: (a -> TcM (b, c)) -> GenLocated (SrcSpanAnn' ann) a -> TcM (GenLocated (SrcSpanAnn' ann) b, c)
- wrapLocSndM :: (a -> TcM (b, c)) -> Located a -> TcM (b, Located c)
- wrapLocSndMA :: (a -> TcM (b, c)) -> GenLocated (SrcSpanAnn' ann) a -> TcM (b, GenLocated (SrcSpanAnn' ann) c)
- wrapLocM_ :: (a -> TcM ()) -> Located a -> TcM ()
- wrapLocMA_ :: (a -> TcM ()) -> LocatedA a -> TcM ()
- getErrsVar :: TcRn (TcRef (Messages TcRnMessage))
- setErrsVar :: TcRef (Messages TcRnMessage) -> TcRn a -> TcRn a
- failWith :: TcRnMessage -> TcRn a
- failAt :: SrcSpan -> TcRnMessage -> TcRn a
- addErrAt :: SrcSpan -> TcRnMessage -> TcRn ()
- mkDetailedMessage :: ErrInfo -> TcRnMessage -> TcRnMessageDetailed
- addErrs :: [(SrcSpan, TcRnMessage)] -> TcRn ()
- checkErr :: Bool -> TcRnMessage -> TcRn ()
- checkErrAt :: SrcSpan -> Bool -> TcRnMessage -> TcRn ()
- addMessages :: Messages TcRnMessage -> TcRn ()
- discardWarnings :: TcRn a -> TcRn a
- mkTcRnMessage :: SrcSpan -> TcRnMessage -> TcRn (MsgEnvelope TcRnMessage)
- reportDiagnostics :: [MsgEnvelope TcRnMessage] -> TcM ()
- reportDiagnostic :: MsgEnvelope TcRnMessage -> TcRn ()
- checkNoErrs :: TcM r -> TcM r
- whenNoErrs :: TcM () -> TcM ()
- ifErrsM :: TcRn r -> TcRn r -> TcRn r
- failIfErrsM :: TcRn ()
- getErrCtxt :: TcM [ErrCtxt]
- setErrCtxt :: [ErrCtxt] -> TcM a -> TcM a
- addErrCtxt :: SDoc -> TcM a -> TcM a
- addErrCtxtM :: (TidyEnv -> ZonkM (TidyEnv, SDoc)) -> TcM a -> TcM a
- addLandmarkErrCtxt :: SDoc -> TcM a -> TcM a
- addLandmarkErrCtxtM :: (TidyEnv -> ZonkM (TidyEnv, SDoc)) -> TcM a -> TcM a
- popErrCtxt :: TcM a -> TcM a
- getCtLocM :: CtOrigin -> Maybe TypeOrKind -> TcM CtLoc
- mkCtLocEnv :: TcLclEnv -> CtLocEnv
- setCtLocM :: CtLoc -> TcM a -> TcM a
- askNoErrs :: TcRn a -> TcRn (a, Bool)
- tryCaptureConstraints :: TcM a -> TcM (Maybe a, WantedConstraints)
- captureConstraints :: TcM a -> TcM (a, WantedConstraints)
- tcCollectingUsage :: TcM a -> TcM (UsageEnv, a)
- tcScalingUsage :: Mult -> TcM a -> TcM a
- tcEmitBindingUsage :: UsageEnv -> TcM ()
- attemptM :: TcRn r -> TcRn (Maybe r)
- recoverM :: TcRn r -> TcRn r -> TcRn r
- mapAndRecoverM :: (a -> TcRn b) -> [a] -> TcRn [b]
- mapAndReportM :: (a -> TcRn b) -> [a] -> TcRn [b]
- foldAndRecoverM :: (b -> a -> TcRn b) -> b -> [a] -> TcRn b
- tryTc :: TcRn a -> TcRn (Maybe a, Messages TcRnMessage)
- discardErrs :: TcRn a -> TcRn a
- tryTcDiscardingErrs :: TcM r -> TcM r -> TcM r
- addErrTc :: TcRnMessage -> TcM ()
- addErrTcM :: (TidyEnv, TcRnMessage) -> TcM ()
- failWithTc :: TcRnMessage -> TcM a
- failWithTcM :: (TidyEnv, TcRnMessage) -> TcM a
- checkTc :: Bool -> TcRnMessage -> TcM ()
- checkTcM :: Bool -> (TidyEnv, TcRnMessage) -> TcM ()
- failIfTc :: Bool -> TcRnMessage -> TcM ()
- failIfTcM :: Bool -> (TidyEnv, TcRnMessage) -> TcM ()
- warnIf :: Bool -> TcRnMessage -> TcRn ()
- diagnosticTc :: Bool -> TcRnMessage -> TcM ()
- diagnosticTcM :: Bool -> (TidyEnv, TcRnMessage) -> TcM ()
- addDiagnosticTc :: TcRnMessage -> TcM ()
- addDiagnosticTcM :: (TidyEnv, TcRnMessage) -> TcM ()
- addDetailedDiagnostic :: (ErrInfo -> TcRnMessage) -> TcM ()
- addTcRnDiagnostic :: TcRnMessage -> TcM ()
- addDiagnostic :: TcRnMessage -> TcRn ()
- addDiagnosticAt :: SrcSpan -> TcRnMessage -> TcRn ()
- mkErrInfo :: TidyEnv -> [ErrCtxt] -> TcM SDoc
- debugTc :: TcM () -> TcM ()
- addTopEvBinds :: Bag EvBind -> TcM a -> TcM a
- newTcEvBinds :: TcM EvBindsVar
- newNoTcEvBinds :: TcM EvBindsVar
- cloneEvBindsVar :: EvBindsVar -> TcM EvBindsVar
- getTcEvTyCoVars :: EvBindsVar -> TcM TyCoVarSet
- getTcEvBindsMap :: EvBindsVar -> TcM EvBindMap
- setTcEvBindsMap :: EvBindsVar -> EvBindMap -> TcM ()
- addTcEvBind :: EvBindsVar -> EvBind -> TcM ()
- chooseUniqueOccTc :: (OccSet -> OccName) -> TcM OccName
- getConstraintVar :: TcM (TcRef WantedConstraints)
- setConstraintVar :: TcRef WantedConstraints -> TcM a -> TcM a
- emitStaticConstraints :: WantedConstraints -> TcM ()
- emitConstraints :: WantedConstraints -> TcM ()
- emitSimple :: Ct -> TcM ()
- emitSimples :: Cts -> TcM ()
- emitImplication :: Implication -> TcM ()
- emitImplications :: Bag Implication -> TcM ()
- emitDelayedErrors :: Bag DelayedError -> TcM ()
- emitHole :: Hole -> TcM ()
- emitHoles :: Bag Hole -> TcM ()
- emitNotConcreteError :: NotConcreteError -> TcM ()
- discardConstraints :: TcM a -> TcM a
- pushLevelAndCaptureConstraints :: TcM a -> TcM (TcLevel, WantedConstraints, a)
- pushTcLevelM_ :: TcM a -> TcM a
- pushTcLevelM :: TcM a -> TcM (TcLevel, a)
- getTcLevel :: TcM TcLevel
- setTcLevel :: TcLevel -> TcM a -> TcM a
- isTouchableTcM :: TcTyVar -> TcM Bool
- getLclTypeEnv :: TcM TcTypeEnv
- setLclTypeEnv :: TcLclEnv -> TcM a -> TcM a
- traceTcConstraints :: String -> TcM ()
- emitAnonTypeHole :: IsExtraConstraint -> TcTyVar -> TcM ()
- emitNamedTypeHole :: (Name, TcTyVar) -> TcM ()
- recordThUse :: TcM ()
- recordThSpliceUse :: TcM ()
- recordThNeededRuntimeDeps :: [Linkable] -> PkgsLoaded -> TcM ()
- keepAlive :: Name -> TcRn ()
- getStage :: TcM ThStage
- getStageAndBindLevel :: Name -> TcRn (Maybe (TopLevelFlag, ThLevel, ThStage))
- setStage :: ThStage -> TcM a -> TcRn a
- addModFinalizersWithLclEnv :: ThModFinalizers -> TcM ()
- recordUnsafeInfer :: Messages TcRnMessage -> TcM ()
- finalSafeMode :: DynFlags -> TcGblEnv -> IO SafeHaskellMode
- fixSafeInstances :: SafeHaskellMode -> [ClsInst] -> [ClsInst]
- getLocalRdrEnv :: RnM LocalRdrEnv
- setLocalRdrEnv :: LocalRdrEnv -> RnM a -> RnM a
- mkIfLclEnv :: Module -> SDoc -> IsBootInterface -> IfLclEnv
- initIfaceTcRn :: IfG a -> TcRn a
- initIfaceLoad :: HscEnv -> IfG a -> IO a
- initIfaceLoadModule :: HscEnv -> Module -> IfG a -> IO a
- initIfaceCheck :: SDoc -> HscEnv -> IfG a -> IO a
- initIfaceLcl :: Module -> SDoc -> IsBootInterface -> IfL a -> IfM lcl a
- initIfaceLclWithSubst :: Module -> SDoc -> IsBootInterface -> NameShape -> IfL a -> IfM lcl a
- getIfModule :: IfL Module
- failIfM :: SDoc -> IfL a
- forkM :: SDoc -> IfL a -> IfL a
- setImplicitEnvM :: TypeEnv -> IfL a -> IfL a
- getCCIndexM :: (gbl -> TcRef CostCentreState) -> FastString -> TcRnIf gbl lcl CostCentreIndex
- getCCIndexTcM :: FastString -> TcM CostCentreIndex
- liftZonkM :: ZonkM a -> TcM a
- module GHC.Types.Basic
- module GHC.Types.Id
- data Name
- class HasOccName name where
  - occName :: name -> OccName
- data OccName
- mkVarOccFS :: FastString -> OccName
- class NamedThing a where
  - getOccName :: a -> OccName
  - getName :: a -> Name
- isFieldName :: Name -> Bool
- tidyNameOcc :: Name -> OccName -> Name
- nameOccName :: Name -> OccName
- setNameUnique :: Name -> Unique -> Name
- nameUnique :: Name -> Unique
- type FastStringEnv a = UniqFM FastString a
- emptyFsEnv :: FastStringEnv a
- extendFsEnv :: FastStringEnv a -> FastString -> a -> FastStringEnv a
- lookupFsEnv :: FastStringEnv a -> FastString -> Maybe a
- mkFsEnv :: [(FastString, a)] -> FastStringEnv a
- type TidyOccEnv = UniqFM FastString Int
- type OccSet = FastStringEnv (UniqSet NameSpace)
- data OccEnv a
- data NameSpace
- tcName :: NameSpace
- clsName :: NameSpace
- tcClsName :: NameSpace
- dataName :: NameSpace
- srcDataName :: NameSpace
- tvName :: NameSpace
- fieldName :: FastString -> NameSpace
- isDataConNameSpace :: NameSpace -> Bool
- isTcClsNameSpace :: NameSpace -> Bool
- isTvNameSpace :: NameSpace -> Bool
- isVarNameSpace :: NameSpace -> Bool
- isTermVarOrFieldNameSpace :: NameSpace -> Bool
- isValNameSpace :: NameSpace -> Bool
- isFieldNameSpace :: NameSpace -> Bool
- pprNameSpace :: NameSpace -> SDoc
- pprNonVarNameSpace :: NameSpace -> SDoc
- pprNameSpaceBrief :: NameSpace -> SDoc
- pprOccName :: IsLine doc => OccName -> doc
- occNameMangledFS :: OccName -> FastString
- mkOccName :: NameSpace -> String -> OccName
- mkOccNameFS :: NameSpace -> FastString -> OccName
- mkVarOcc :: String -> OccName
- mkRecFieldOcc :: FastString -> String -> OccName
- mkRecFieldOccFS :: FastString -> FastString -> OccName
- varToRecFieldOcc :: HasDebugCallStack => FastString -> OccName -> OccName
- recFieldToVarOcc :: HasDebugCallStack => OccName -> OccName
- mkDataOcc :: String -> OccName
- mkDataOccFS :: FastString -> OccName
- mkTyVarOcc :: String -> OccName
- mkTyVarOccFS :: FastString -> OccName
- mkTcOcc :: String -> OccName
- mkTcOccFS :: FastString -> OccName
- mkClsOcc :: String -> OccName
- mkClsOccFS :: FastString -> OccName
- demoteOccName :: OccName -> Maybe OccName
- demoteOccTvName :: OccName -> Maybe OccName
- promoteOccName :: OccName -> Maybe OccName
- emptyOccEnv :: OccEnv a
- unitOccEnv :: OccName -> a -> OccEnv a
- extendOccEnv :: OccEnv a -> OccName -> a -> OccEnv a
- extendOccEnvList :: OccEnv a -> [(OccName, a)] -> OccEnv a
- lookupOccEnv :: OccEnv a -> OccName -> Maybe a
- lookupOccEnv_AllNameSpaces :: OccEnv a -> OccName -> [a]
- lookupOccEnv_WithFields :: OccEnv a -> OccName -> [a]
- lookupFieldsOccEnv :: OccEnv a -> FastString -> [a]
- mkOccEnv :: [(OccName, a)] -> OccEnv a
- mkOccEnv_C :: (a -> a -> a) -> [(OccName, a)] -> OccEnv a
- elemOccEnv :: OccName -> OccEnv a -> Bool
- nonDetFoldOccEnv :: (a -> b -> b) -> b -> OccEnv a -> b
- nonDetOccEnvElts :: OccEnv a -> [a]
- plusOccEnv :: OccEnv a -> OccEnv a -> OccEnv a
- plusOccEnv_C :: (a -> a -> a) -> OccEnv a -> OccEnv a -> OccEnv a
- mapOccEnv :: (a -> b) -> OccEnv a -> OccEnv b
- mapMaybeOccEnv :: (a -> Maybe b) -> OccEnv a -> OccEnv b
- extendOccEnv_Acc :: (a -> b -> b) -> (a -> b) -> OccEnv b -> OccName -> a -> OccEnv b
- delFromOccEnv :: OccEnv a -> OccName -> OccEnv a
- delListFromOccEnv :: OccEnv a -> [OccName] -> OccEnv a
- filterOccEnv :: (a -> Bool) -> OccEnv a -> OccEnv a
- alterOccEnv :: (Maybe a -> Maybe a) -> OccEnv a -> OccName -> OccEnv a
- intersectOccEnv_C :: (a -> b -> c) -> OccEnv a -> OccEnv b -> OccEnv c
- minusOccEnv :: OccEnv a -> OccEnv b -> OccEnv a
- minusOccEnv_C :: (a -> b -> Maybe a) -> OccEnv a -> OccEnv b -> OccEnv a
- minusOccEnv_C_Ns :: (UniqFM NameSpace a -> UniqFM NameSpace b -> UniqFM NameSpace a) -> OccEnv a -> OccEnv b -> OccEnv a
- pprOccEnv :: (a -> SDoc) -> OccEnv a -> SDoc
- strictMapOccEnv :: (a -> b) -> OccEnv a -> OccEnv b
- forceOccEnv :: (a -> ()) -> OccEnv a -> ()
- emptyOccSet :: OccSet
- unitOccSet :: OccName -> OccSet
- mkOccSet :: [OccName] -> OccSet
- extendOccSet :: OccSet -> OccName -> OccSet
- extendOccSetList :: OccSet -> [OccName] -> OccSet
- unionOccSets :: OccSet -> OccSet -> OccSet
- unionManyOccSets :: [OccSet] -> OccSet
- elemOccSet :: OccName -> OccSet -> Bool
- isEmptyOccSet :: OccSet -> Bool
- occNameString :: OccName -> String
- setOccNameSpace :: NameSpace -> OccName -> OccName
- isVarOcc :: OccName -> Bool
- isTvOcc :: OccName -> Bool
- isTcOcc :: OccName -> Bool
- isFieldOcc :: OccName -> Bool
- fieldOcc_maybe :: OccName -> Maybe FastString
- isValOcc :: OccName -> Bool
- isDataOcc :: OccName -> Bool
- isDataSymOcc :: OccName -> Bool
- isSymOcc :: OccName -> Bool
- parenSymOcc :: OccName -> SDoc -> SDoc
- startsWithUnderscore :: OccName -> Bool
- isDerivedOccName :: OccName -> Bool
- isDefaultMethodOcc :: OccName -> Bool
- isTypeableBindOcc :: OccName -> Bool
- mkDataConWrapperOcc :: OccName -> OccName
- mkWorkerOcc :: OccName -> OccName
- mkMatcherOcc :: OccName -> OccName
- mkBuilderOcc :: OccName -> OccName
- mkDefaultMethodOcc :: OccName -> OccName
- mkClassOpAuxOcc :: OccName -> OccName
- mkDictOcc :: OccName -> OccName
- mkIPOcc :: OccName -> OccName
- mkSpecOcc :: OccName -> OccName
- mkForeignExportOcc :: OccName -> OccName
- mkRepEqOcc :: OccName -> OccName
- mkClassDataConOcc :: OccName -> OccName
- mkNewTyCoOcc :: OccName -> OccName
- mkInstTyCoOcc :: OccName -> OccName
- mkEqPredCoOcc :: OccName -> OccName
- mkCon2TagOcc :: OccName -> OccName
- mkTag2ConOcc :: OccName -> OccName
- mkMaxTagOcc :: OccName -> OccName
- mkDataTOcc :: OccName -> OccName
- mkDataCOcc :: OccName -> OccName
- mkTyConRepOcc :: OccName -> OccName
- mkGenR :: OccName -> OccName
- mkGen1R :: OccName -> OccName
- mkDataConWorkerOcc :: OccName -> OccName
- mkSuperDictAuxOcc :: Int -> OccName -> OccName
- mkSuperDictSelOcc :: Int -> OccName -> OccName
- mkLocalOcc :: Unique -> OccName -> OccName
- mkInstTyTcOcc :: String -> OccSet -> OccName
- mkDFunOcc :: String -> Bool -> OccSet -> OccName
- mkMethodOcc :: OccName -> OccName
- emptyTidyOccEnv :: TidyOccEnv
- initTidyOccEnv :: [OccName] -> TidyOccEnv
- delTidyOccEnvList :: TidyOccEnv -> [FastString] -> TidyOccEnv
- avoidClashesOccEnv :: TidyOccEnv -> [OccName] -> TidyOccEnv
- tidyOccName :: TidyOccEnv -> OccName -> (TidyOccEnv, OccName)
- mainOcc :: OccName
- ppMainFn :: OccName -> SDoc
- data BuiltInSyntax
  - = BuiltInSyntax
  - | UserSyntax
- nameNameSpace :: Name -> NameSpace
- nameSrcLoc :: Name -> SrcLoc
- nameSrcSpan :: Name -> SrcSpan
- isWiredInName :: Name -> Bool
- isWiredIn :: NamedThing thing => thing -> Bool
- wiredInNameTyThing_maybe :: Name -> Maybe TyThing
- isBuiltInSyntax :: Name -> Bool
- isTupleTyConName :: Name -> Bool
- isExternalName :: Name -> Bool
- isInternalName :: Name -> Bool
- isHoleName :: Name -> Bool
- isDynLinkName :: Platform -> Module -> Name -> Bool
- nameModule :: HasDebugCallStack => Name -> Module
- nameModule_maybe :: Name -> Maybe Module
- namePun_maybe :: Name -> Maybe FastString
- nameIsLocalOrFrom :: Module -> Name -> Bool
- nameIsExternalOrFrom :: Module -> Name -> Bool
- nameIsHomePackage :: Module -> Name -> Bool
- nameIsHomePackageImport :: Module -> Name -> Bool
- nameIsFromExternalPackage :: HomeUnit -> Name -> Bool
- isTyVarName :: Name -> Bool
- isTyConName :: Name -> Bool
- isDataConName :: Name -> Bool
- isValName :: Name -> Bool
- isVarName :: Name -> Bool
- isSystemName :: Name -> Bool
- mkInternalName :: Unique -> OccName -> SrcSpan -> Name
- mkClonedInternalName :: Unique -> Name -> Name
- mkDerivedInternalName :: (OccName -> OccName) -> Unique -> Name -> Name
- mkExternalName :: Unique -> Module -> OccName -> SrcSpan -> Name
- mkWiredInName :: Module -> OccName -> Unique -> TyThing -> BuiltInSyntax -> Name
- mkSystemName :: Unique -> OccName -> Name
- mkSystemNameAt :: Unique -> OccName -> SrcSpan -> Name
- mkSystemVarName :: Unique -> FastString -> Name
- mkSysTvName :: Unique -> FastString -> Name
- mkFCallName :: Unique -> FastString -> Name
- setNameLoc :: Name -> SrcSpan -> Name
- localiseName :: Name -> Name
- stableNameCmp :: Name -> Name -> Ordering
- pprName :: IsLine doc => Name -> doc
- pprFullName :: Module -> Name -> SDoc
- pprTickyName :: Module -> Name -> SDoc
- pprNameUnqualified :: Name -> SDoc
- pprModulePrefix :: PprStyle -> Module -> OccName -> SDoc
- pprDefinedAt :: Name -> SDoc
- pprNameDefnLoc :: Name -> SDoc
- nameStableString :: Name -> String
- getSrcLoc :: NamedThing a => a -> SrcLoc
- getSrcSpan :: NamedThing a => a -> SrcSpan
- getOccString :: NamedThing a => a -> String
- getOccFS :: NamedThing a => a -> FastString
- pprInfixName :: (Outputable a, NamedThing a) => a -> SDoc
- pprPrefixName :: NamedThing a => a -> SDoc
- module GHC.Types.Name.Set
- module GHC.Types.Name.Cache
- module GHC.Types.Name.Env
- data RdrName
  - = Unqual OccName
  - | Qual ModuleName OccName
  - | Orig Module OccName
  - | Exact Name
- data RecFieldInfo = RecFieldInfo {
  - recFieldLabel :: !FieldLabel
  - recFieldCons :: !(UniqSet ConLikeName)
  }
- data ConLikeName
  - = DataConName {
    - conLikeName_Name :: !Name
    }
  - | PatSynName {
    - conLikeName_Name :: !Name
    }
- data GREInfo
  - = Vanilla
  - | UnboundGRE
  - | IAmTyCon !(TyConFlavour Name)
  - | IAmConLike !ConInfo
  - | IAmRecField !RecFieldInfo
- plusGREInfo :: GREInfo -> GREInfo -> GREInfo
- data ImpItemSpec
  - = ImpAll
  - | ImpSome {
    - is_explicit :: !Bool
    - is_iloc :: !SrcSpan
    }
- data ImpDeclSpec = ImpDeclSpec {
  - is_mod :: !Module
  - is_as :: !ModuleName
  - is_qual :: !Bool
  - is_dloc :: !SrcSpan
  }
- data ImportSpec = ImpSpec {
  - is_decl :: !ImpDeclSpec
  - is_item :: !ImpItemSpec
  }
- data LookupChild = LookupChild {
  - wantedParent :: Name
  - lookupDataConFirst :: Bool
  - prioritiseParent :: Bool
  }
- data WhichGREs info where
  - SameNameSpace :: forall info. WhichGREs info
  - RelevantGREs :: {..} -> WhichGREs GREInfo
  - pattern RelevantGREsFOS :: FieldsOrSelectors -> WhichGREs GREInfo
  - pattern AllRelevantGREs :: WhichGREs GREInfo
- data LookupGRE info where
  - LookupOccName :: forall info. OccName -> WhichGREs info -> LookupGRE info
  - LookupRdrName :: forall info. RdrName -> WhichGREs info -> LookupGRE info
  - LookupExactName :: forall info. {..} -> LookupGRE info
  - LookupChildren :: forall info. OccName -> LookupChild -> LookupGRE info
- data FieldsOrSelectors
  - = WantNormal
  - | WantBoth
  - | WantField
- data Parent
  - = NoParent
  - | ParentIs {
    - par_is :: !Name
    }
- type FieldGlobalRdrElt = GlobalRdrElt
- data GlobalRdrEltX info
- type IfGlobalRdrElt = GlobalRdrEltX ()
- type GlobalRdrElt = GlobalRdrEltX GREInfo
- type GlobalRdrEnvX info = OccEnv [GlobalRdrEltX info]
- type IfGlobalRdrEnv = GlobalRdrEnvX ()
- type GlobalRdrEnv = GlobalRdrEnvX GREInfo
- data LocalRdrEnv
- rdrNameOcc :: RdrName -> OccName
- rdrNameSpace :: RdrName -> NameSpace
- demoteRdrName :: RdrName -> Maybe RdrName
- demoteRdrNameTv :: RdrName -> Maybe RdrName
- promoteRdrName :: RdrName -> Maybe RdrName
- mkRdrUnqual :: OccName -> RdrName
- mkRdrQual :: ModuleName -> OccName -> RdrName
- mkOrig :: Module -> OccName -> RdrName
- mkUnqual :: NameSpace -> FastString -> RdrName
- mkVarUnqual :: FastString -> RdrName
- mkQual :: NameSpace -> (FastString, FastString) -> RdrName
- getRdrName :: NamedThing thing => thing -> RdrName
- nameRdrName :: Name -> RdrName
- isRdrDataCon :: RdrName -> Bool
- isRdrTyVar :: RdrName -> Bool
- isRdrTc :: RdrName -> Bool
- isSrcRdrName :: RdrName -> Bool
- isUnqual :: RdrName -> Bool
- isQual :: RdrName -> Bool
- isQual_maybe :: RdrName -> Maybe (ModuleName, OccName)
- isOrig :: RdrName -> Bool
- isOrig_maybe :: RdrName -> Maybe (Module, OccName)
- isExact :: RdrName -> Bool
- isExact_maybe :: RdrName -> Maybe Name
- emptyLocalRdrEnv :: LocalRdrEnv
- extendLocalRdrEnv :: LocalRdrEnv -> Name -> LocalRdrEnv
- extendLocalRdrEnvList :: LocalRdrEnv -> [Name] -> LocalRdrEnv
- lookupLocalRdrEnv :: LocalRdrEnv -> RdrName -> Maybe Name
- lookupLocalRdrOcc :: LocalRdrEnv -> OccName -> Maybe Name
- elemLocalRdrEnv :: RdrName -> LocalRdrEnv -> Bool
- localRdrEnvElts :: LocalRdrEnv -> [Name]
- inLocalRdrEnvScope :: Name -> LocalRdrEnv -> Bool
- minusLocalRdrEnv :: LocalRdrEnv -> OccEnv a -> LocalRdrEnv
- minusLocalRdrEnvList :: LocalRdrEnv -> [OccName] -> LocalRdrEnv
- greName :: GlobalRdrEltX info -> Name
- greNameSpace :: GlobalRdrEltX info -> NameSpace
- greParent :: GlobalRdrEltX info -> Parent
- greInfo :: GlobalRdrElt -> GREInfo
- mkGRE :: (Name -> Maybe ImportSpec) -> GREInfo -> Parent -> Name -> GlobalRdrElt
- mkExactGRE :: Name -> GREInfo -> GlobalRdrElt
- mkLocalGRE :: GREInfo -> Parent -> Name -> GlobalRdrElt
- mkLocalVanillaGRE :: Parent -> Name -> GlobalRdrElt
- mkLocalTyConGRE :: TyConFlavour Name -> Name -> GlobalRdrElt
- mkLocalConLikeGRE :: Parent -> (ConLikeName, ConInfo) -> GlobalRdrElt
- mkLocalFieldGREs :: Parent -> [(ConLikeName, ConInfo)] -> [GlobalRdrElt]
- greOccName :: GlobalRdrEltX info -> OccName
- greDefinitionSrcSpan :: GlobalRdrEltX info -> SrcSpan
- greDefinitionModule :: GlobalRdrEltX info -> Maybe Module
- greQualModName :: Outputable info => GlobalRdrEltX info -> ModuleName
- greRdrNames :: GlobalRdrEltX info -> [RdrName]
- greSrcSpan :: Outputable info => GlobalRdrEltX info -> SrcSpan
- mkParent :: Name -> AvailInfo -> Parent
- availParent :: AvailInfo -> Parent
- greParent_maybe :: GlobalRdrEltX info -> Maybe Name
- gresToNameSet :: [GlobalRdrEltX info] -> NameSet
- gresToAvailInfo :: [GlobalRdrEltX info] -> [AvailInfo]
- availFromGRE :: GlobalRdrEltX info -> AvailInfo
- emptyGlobalRdrEnv :: GlobalRdrEnvX info
- globalRdrEnvElts :: GlobalRdrEnvX info -> [GlobalRdrEltX info]
- forceGlobalRdrEnv :: GlobalRdrEnvX info -> IfGlobalRdrEnv
- hydrateGlobalRdrEnv :: (Name -> IO info) -> GlobalRdrEnvX noInfo -> GlobalRdrEnvX info
- pprGlobalRdrEnv :: Bool -> GlobalRdrEnv -> SDoc
- fieldGRE_maybe :: GlobalRdrElt -> Maybe FieldGlobalRdrElt
- fieldGRELabel :: HasDebugCallStack => FieldGlobalRdrElt -> FieldLabel
- fieldGREInfo :: HasDebugCallStack => FieldGlobalRdrElt -> RecFieldInfo
- recFieldConLike_maybe :: HasDebugCallStack => GlobalRdrElt -> Maybe ConInfo
- recFieldInfo_maybe :: HasDebugCallStack => GlobalRdrElt -> Maybe RecFieldInfo
- filterFieldGREs :: FieldsOrSelectors -> [GlobalRdrElt] -> [GlobalRdrElt]
- allowGRE :: FieldsOrSelectors -> GlobalRdrElt -> Bool
- greIsRelevant :: WhichGREs GREInfo -> NameSpace -> GlobalRdrElt -> Bool
- lookupGRE :: GlobalRdrEnvX info -> LookupGRE info -> [GlobalRdrEltX info]
- lookupGRE_Name :: Outputable info => GlobalRdrEnvX info -> Name -> Maybe (GlobalRdrEltX info)
- lookupGRE_FieldLabel :: GlobalRdrEnv -> FieldLabel -> Maybe FieldGlobalRdrElt
- getGRE_NameQualifier_maybes :: GlobalRdrEnv -> Name -> [Maybe [ModuleName]]
- isLocalGRE :: GlobalRdrEltX info -> Bool
- isImportedGRE :: GlobalRdrEltX info -> Bool
- isRecFldGRE :: GlobalRdrEltX info -> Bool
- isDuplicateRecFldGRE :: GlobalRdrElt -> Bool
- isNoFieldSelectorGRE :: GlobalRdrElt -> Bool
- isFieldSelectorGRE :: GlobalRdrElt -> Bool
- greFieldLabel_maybe :: GlobalRdrElt -> Maybe FieldLabel
- unQualOK :: GlobalRdrEltX info -> Bool
- pickGREs :: RdrName -> [GlobalRdrEltX info] -> [GlobalRdrEltX info]
- pickGREsModExp :: ModuleName -> [GlobalRdrEltX info] -> [(GlobalRdrEltX info, GlobalRdrEltX info)]
- plusGlobalRdrEnv :: GlobalRdrEnv -> GlobalRdrEnv -> GlobalRdrEnv
- mkGlobalRdrEnv :: [GlobalRdrElt] -> GlobalRdrEnv
- insertGRE :: GlobalRdrElt -> [GlobalRdrElt] -> [GlobalRdrElt]
- plusGRE :: GlobalRdrElt -> GlobalRdrElt -> GlobalRdrElt
- transformGREs :: (GlobalRdrElt -> GlobalRdrElt) -> [OccName] -> GlobalRdrEnv -> GlobalRdrEnv
- extendGlobalRdrEnv :: GlobalRdrEnv -> GlobalRdrElt -> GlobalRdrEnv
- shadowNames :: Bool -> GlobalRdrEnv -> GlobalRdrEnv -> GlobalRdrEnv
- greClashesWith :: GlobalRdrElt -> GlobalRdrElt -> Bool
- bestImport :: NonEmpty ImportSpec -> ImportSpec
- unQualSpecOK :: ImportSpec -> Bool
- qualSpecOK :: ModuleName -> ImportSpec -> Bool
- importSpecLoc :: ImportSpec -> SrcSpan
- importSpecModule :: ImportSpec -> ModuleName
- isExplicitItem :: ImpItemSpec -> Bool
- pprNameProvenance :: GlobalRdrEltX info -> SDoc
- opIsAt :: RdrName -> Bool
- data Severity
  - = SevIgnore
  - | SevWarning
  - | SevError
- emptyMessages :: Messages e
- data HscSource where
  - HsSrcFile
  - HsBootOrSig !HsBootOrSig
  - pattern HsigFile :: HscSource
  - pattern HsBootFile :: HscSource
- module GHC.Types.SourceText
- module GHC.Types.TyThing
- module GHC.Types.TyThing.Ppr
- module GHC.Types.Unique.Supply
- data Var
- setVarUnique :: Var -> Unique -> Var
- setTyVarUnique :: TyVar -> Unique -> TyVar
- type Unit = GenUnit UnitId
- type Module = GenModule Unit
- data GenModule unit = Module !unit !ModuleName
- newtype ModuleName = ModuleName FastString
- stableModuleNameCmp :: ModuleName -> ModuleName -> Ordering
- moduleNameFS :: ModuleName -> FastString
- moduleNameString :: ModuleName -> String
- mkModuleName :: String -> ModuleName
- mkModuleNameFS :: FastString -> ModuleName
- moduleNameSlashes :: ModuleName -> String
- moduleNameColons :: ModuleName -> String
- parseModuleName :: ReadP ModuleName
- data IsBootInterface
  - = NotBoot
  - | IsBoot
- data GenUnit uid
  - = RealUnit !(Definite uid)
  - | VirtUnit !(GenInstantiatedUnit uid)
  - | HoleUnit
- type ModuleWithIsBoot = GenWithIsBoot Module
- type ModuleNameWithIsBoot = GenWithIsBoot ModuleName
- data GenWithIsBoot mod = GWIB {
  - gwib_mod :: mod
  - gwib_isBoot :: IsBootInterface
  }
- newtype Definite unit = Definite {
  - unDefinite :: unit
  }
- type DefUnitId = Definite UnitId
- unitIdFS :: UnitId -> FastString
- type Instantiations = GenInstantiations UnitId
- type GenInstantiations unit = [(ModuleName, GenModule (GenUnit unit))]
- type InstantiatedUnit = GenInstantiatedUnit UnitId
- data GenInstantiatedUnit unit = InstantiatedUnit {
  - instUnitFS :: !FastString
  - instUnitKey :: !Unique
  - instUnitInstanceOf :: !unit
  - instUnitInsts :: !(GenInstantiations unit)
  - instUnitHoles :: UniqDSet ModuleName
  }
- newtype UnitKey = UnitKey FastString
- class IsUnitId u where
  - unitFS :: u -> FastString
- type InstantiatedModule = GenModule InstantiatedUnit
- type HomeUnitModule = GenModule UnitId
- type InstalledModule = GenModule UnitId
- moduleUnitId :: Module -> UnitId
- mkModule :: u -> ModuleName -> GenModule u
- pprModule :: IsLine doc => Module -> doc
- pprInstantiatedModule :: InstantiatedModule -> SDoc
- isHoleUnit :: GenUnit u -> Bool
- stableUnitCmp :: Unit -> Unit -> Ordering
- pprUnit :: Unit -> SDoc
- unitFreeModuleHoles :: GenUnit u -> UniqDSet ModuleName
- moduleFreeHoles :: GenModule (GenUnit u) -> UniqDSet ModuleName
- mkInstantiatedUnit :: IsUnitId u => u -> GenInstantiations u -> GenInstantiatedUnit u
- mkVirtUnit :: IsUnitId u => u -> [(ModuleName, GenModule (GenUnit u))] -> GenUnit u
- mkInstantiatedUnitHash :: IsUnitId u => u -> [(ModuleName, GenModule (GenUnit u))] -> FastString
- fsToUnit :: FastString -> Unit
- unitString :: IsUnitId u => u -> String
- stringToUnit :: String -> Unit
- mapGenUnit :: IsUnitId v => (u -> v) -> GenUnit u -> GenUnit v
- mapInstantiations :: IsUnitId v => (u -> v) -> GenInstantiations u -> GenInstantiations v
- virtualUnitId :: InstantiatedUnit -> UnitId
- unitIsDefinite :: Unit -> Bool
- unitIdString :: UnitId -> String
- stringToUnitId :: String -> UnitId
- primUnitId :: UnitId
- bignumUnitId :: UnitId
- baseUnitId :: UnitId
- rtsUnitId :: UnitId
- thisGhcUnitId :: UnitId
- interactiveUnitId :: UnitId
- thUnitId :: UnitId
- thUnit :: Unit
- primUnit :: Unit
- bignumUnit :: Unit
- baseUnit :: Unit
- rtsUnit :: Unit
- thisGhcUnit :: Unit
- interactiveUnit :: Unit
- mainUnitId :: UnitId
- mainUnit :: Unit
- isInteractiveModule :: Module -> Bool
- wiredInUnitIds :: [UnitId]
- addBootSuffix :: FilePath -> FilePath
- removeBootSuffix :: FilePath -> FilePath
- addBootSuffix_maybe :: IsBootInterface -> FilePath -> FilePath
- addBootSuffixLocn_maybe :: IsBootInterface -> ModLocation -> ModLocation
- addBootSuffixLocn :: ModLocation -> ModLocation
- addBootSuffixLocnOut :: ModLocation -> ModLocation
- data InstalledModuleEnv elt
- type DModuleNameEnv elt = UniqDFM ModuleName elt
- type ModuleNameEnv elt = UniqFM ModuleName elt
- type ModuleSet = Set NDModule
- data ModuleEnv elt
- filterModuleEnv :: (Module -> a -> Bool) -> ModuleEnv a -> ModuleEnv a
- mapMaybeModuleEnv :: (Module -> a -> Maybe b) -> ModuleEnv a -> ModuleEnv b
- elemModuleEnv :: Module -> ModuleEnv a -> Bool
- extendModuleEnv :: ModuleEnv a -> Module -> a -> ModuleEnv a
- extendModuleEnvWith :: (a -> a -> a) -> ModuleEnv a -> Module -> a -> ModuleEnv a
- extendModuleEnvList :: ModuleEnv a -> [(Module, a)] -> ModuleEnv a
- extendModuleEnvList_C :: (a -> a -> a) -> ModuleEnv a -> [(Module, a)] -> ModuleEnv a
- plusModuleEnv_C :: (a -> a -> a) -> ModuleEnv a -> ModuleEnv a -> ModuleEnv a
- delModuleEnvList :: ModuleEnv a -> [Module] -> ModuleEnv a
- delModuleEnv :: ModuleEnv a -> Module -> ModuleEnv a
- plusModuleEnv :: ModuleEnv a -> ModuleEnv a -> ModuleEnv a
- lookupModuleEnv :: ModuleEnv a -> Module -> Maybe a
- lookupWithDefaultModuleEnv :: ModuleEnv a -> a -> Module -> a
- mapModuleEnv :: (a -> b) -> ModuleEnv a -> ModuleEnv b
- partitionModuleEnv :: (a -> Bool) -> ModuleEnv a -> (ModuleEnv a, ModuleEnv a)
- alterModuleEnv :: (Maybe a -> Maybe a) -> Module -> ModuleEnv a -> ModuleEnv a
- mkModuleEnv :: [(Module, a)] -> ModuleEnv a
- emptyModuleEnv :: ModuleEnv a
- moduleEnvKeys :: ModuleEnv a -> [Module]
- moduleEnvElts :: ModuleEnv a -> [a]
- moduleEnvToList :: ModuleEnv a -> [(Module, a)]
- unitModuleEnv :: Module -> a -> ModuleEnv a
- isEmptyModuleEnv :: ModuleEnv a -> Bool
- mkModuleSet :: [Module] -> ModuleSet
- extendModuleSet :: ModuleSet -> Module -> ModuleSet
- extendModuleSetList :: ModuleSet -> [Module] -> ModuleSet
- emptyModuleSet :: ModuleSet
- isEmptyModuleSet :: ModuleSet -> Bool
- moduleSetElts :: ModuleSet -> [Module]
- elemModuleSet :: Module -> ModuleSet -> Bool
- intersectModuleSet :: ModuleSet -> ModuleSet -> ModuleSet
- minusModuleSet :: ModuleSet -> ModuleSet -> ModuleSet
- delModuleSet :: ModuleSet -> Module -> ModuleSet
- unionModuleSet :: ModuleSet -> ModuleSet -> ModuleSet
- unionManyModuleSets :: [ModuleSet] -> ModuleSet
- unitModuleSet :: Module -> ModuleSet
- emptyInstalledModuleEnv :: InstalledModuleEnv a
- lookupInstalledModuleEnv :: InstalledModuleEnv a -> InstalledModule -> Maybe a
- extendInstalledModuleEnv :: InstalledModuleEnv a -> InstalledModule -> a -> InstalledModuleEnv a
- filterInstalledModuleEnv :: (InstalledModule -> a -> Bool) -> InstalledModuleEnv a -> InstalledModuleEnv a
- delInstalledModuleEnv :: InstalledModuleEnv a -> InstalledModule -> InstalledModuleEnv a
- installedModuleEnvElts :: InstalledModuleEnv a -> [(InstalledModule, a)]
- mergeInstalledModuleEnv :: (elta -> eltb -> Maybe eltc) -> (InstalledModuleEnv elta -> InstalledModuleEnv eltc) -> (InstalledModuleEnv eltb -> InstalledModuleEnv eltc) -> InstalledModuleEnv elta -> InstalledModuleEnv eltb -> InstalledModuleEnv eltc
- plusInstalledModuleEnv :: (elt -> elt -> elt) -> InstalledModuleEnv elt -> InstalledModuleEnv elt -> InstalledModuleEnv elt
- class HasModule (m :: Type -> Type) where
  - getModule :: m Module
- class ContainsModule t where
  - extractModule :: t -> Module
- moduleIsDefinite :: Module -> Bool
- moduleStableString :: Module -> String
- stableModuleCmp :: Module -> Module -> Ordering
- installedModuleEq :: InstalledModule -> Module -> Bool
- getModuleInstantiation :: Module -> (InstalledModule, Maybe InstantiatedModule)
- getUnitInstantiations :: Unit -> (UnitId, Maybe InstantiatedUnit)
- uninstantiateInstantiatedUnit :: InstantiatedUnit -> InstantiatedUnit
- uninstantiateInstantiatedModule :: InstantiatedModule -> InstantiatedModule
- isHoleModule :: GenModule (GenUnit u) -> Bool
- mkHoleModule :: ModuleName -> GenModule (GenUnit u)
- module GHC.Unit.Module.Graph
- data SrcSpanAnn' a
- data HsModule p
  - = HsModule {
    - hsmodExt :: XCModule p
    - hsmodName :: Maybe (XRec p ModuleName)
    - hsmodExports :: Maybe (XRec p [LIE p])
    - hsmodImports :: [LImportDecl p]
    - hsmodDecls :: [LHsDecl p]
    }
  - | XModule !(XXModule p)
- module GHC.Hs.Binds
- module GHC.Parser
- mkPrelImports :: ModuleName -> SrcSpan -> Bool -> [LImportDecl GhcPs] -> [LImportDecl GhcPs]
- getOptionsFromFile :: ParserOpts -> FilePath -> IO (Messages PsMessage, [Located String])
- getOptions :: ParserOpts -> StringBuffer -> FilePath -> (Messages PsMessage, [Located String])
- toArgs :: RealSrcLoc -> String -> Either String [Located String]
- checkProcessArgsResult :: MonadIO m => [Located String] -> m ()
- data Token
  - = ITas
  - | ITcase
  - | ITclass
  - | ITdata
  - | ITdefault
  - | ITderiving
  - | ITdo (Maybe FastString)
  - | ITelse
  - | IThiding
  - | ITforeign
  - | ITif
  - | ITimport
  - | ITin
  - | ITinfix
  - | ITinfixl
  - | ITinfixr
  - | ITinstance
  - | ITlet
  - | ITmodule
  - | ITnewtype
  - | ITof
  - | ITqualified
  - | ITthen
  - | ITtype
  - | ITwhere
  - | ITforall IsUnicodeSyntax
  - | ITexport
  - | ITlabel
  - | ITdynamic
  - | ITsafe
  - | ITinterruptible
  - | ITunsafe
  - | ITstdcallconv
  - | ITccallconv
  - | ITcapiconv
  - | ITprimcallconv
  - | ITjavascriptcallconv
  - | ITmdo (Maybe FastString)
  - | ITfamily
  - | ITrole
  - | ITgroup
  - | ITby
  - | ITusing
  - | ITpattern
  - | ITstatic
  - | ITstock
  - | ITanyclass
  - | ITvia
  - | ITunit
  - | ITsignature
  - | ITdependency
  - | ITrequires
  - | ITinline_prag SourceText InlineSpec RuleMatchInfo
  - | ITopaque_prag SourceText
  - | ITspec_prag SourceText
  - | ITspec_inline_prag SourceText Bool
  - | ITsource_prag SourceText
  - | ITrules_prag SourceText
  - | ITwarning_prag SourceText
  - | ITdeprecated_prag SourceText
  - | ITline_prag SourceText
  - | ITcolumn_prag SourceText
  - | ITscc_prag SourceText
  - | ITunpack_prag SourceText
  - | ITnounpack_prag SourceText
  - | ITann_prag SourceText
  - | ITcomplete_prag SourceText
  - | ITclose_prag
  - | IToptions_prag String
  - | ITinclude_prag String
  - | ITlanguage_prag
  - | ITminimal_prag SourceText
  - | IToverlappable_prag SourceText
  - | IToverlapping_prag SourceText
  - | IToverlaps_prag SourceText
  - | ITincoherent_prag SourceText
  - | ITctype SourceText
  - | ITcomment_line_prag
  - | ITdotdot
  - | ITcolon
  - | ITdcolon IsUnicodeSyntax
  - | ITequal
  - | ITlam
  - | ITlcase
  - | ITlcases
  - | ITvbar
  - | ITlarrow IsUnicodeSyntax
  - | ITrarrow IsUnicodeSyntax
  - | ITdarrow IsUnicodeSyntax
  - | ITlolly
  - | ITminus
  - | ITprefixminus
  - | ITbang
  - | ITtilde
  - | ITat
  - | ITtypeApp
  - | ITpercent
  - | ITstar IsUnicodeSyntax
  - | ITdot
  - | ITproj Bool
  - | ITbiglam
  - | ITocurly
  - | ITccurly
  - | ITvocurly
  - | ITvccurly
  - | ITobrack
  - | ITopabrack
  - | ITcpabrack
  - | ITcbrack
  - | IToparen
  - | ITcparen
  - | IToubxparen
  - | ITcubxparen
  - | ITsemi
  - | ITcomma
  - | ITunderscore
  - | ITbackquote
  - | ITsimpleQuote
  - | ITvarid FastString
  - | ITconid FastString
  - | ITvarsym FastString
  - | ITconsym FastString
  - | ITqvarid (FastString, FastString)
  - | ITqconid (FastString, FastString)
  - | ITqvarsym (FastString, FastString)
  - | ITqconsym (FastString, FastString)
  - | ITdupipvarid FastString
  - | ITlabelvarid SourceText FastString
  - | ITchar SourceText Char
  - | ITstring SourceText FastString
  - | ITinteger IntegralLit
  - | ITrational FractionalLit
  - | ITprimchar SourceText Char
  - | ITprimstring SourceText ByteString
  - | ITprimint SourceText Integer
  - | ITprimword SourceText Integer
  - | ITprimint8 SourceText Integer
  - | ITprimint16 SourceText Integer
  - | ITprimint32 SourceText Integer
  - | ITprimint64 SourceText Integer
  - | ITprimword8 SourceText Integer
  - | ITprimword16 SourceText Integer
  - | ITprimword32 SourceText Integer
  - | ITprimword64 SourceText Integer
  - | ITprimfloat FractionalLit
  - | ITprimdouble FractionalLit
  - | ITopenExpQuote HasE IsUnicodeSyntax
  - | ITopenPatQuote
  - | ITopenDecQuote
  - | ITopenTypQuote
  - | ITcloseQuote IsUnicodeSyntax
  - | ITopenTExpQuote HasE
  - | ITcloseTExpQuote
  - | ITdollar
  - | ITdollardollar
  - | ITtyQuote
  - | ITquasiQuote (FastString, FastString, PsSpan)
  - | ITqQuasiQuote (FastString, FastString, FastString, PsSpan)
  - | ITproc
  - | ITrec
  - | IToparenbar IsUnicodeSyntax
  - | ITcparenbar IsUnicodeSyntax
  - | ITlarrowtail IsUnicodeSyntax
  - | ITrarrowtail IsUnicodeSyntax
  - | ITLarrowtail IsUnicodeSyntax
  - | ITRarrowtail IsUnicodeSyntax
  - | ITunknown String
  - | ITeof
  - | ITdocComment HsDocString PsSpan
  - | ITdocOptions String PsSpan
  - | ITlineComment String PsSpan
  - | ITblockComment String PsSpan
- data PState = PState {
  - buffer :: StringBuffer
  - options :: ParserOpts
  - warnings :: Messages PsMessage
  - errors :: Messages PsMessage
  - tab_first :: Maybe RealSrcSpan
  - tab_count :: !Word
  - last_tk :: Maybe (PsLocated Token)
  - prev_loc :: PsSpan
  - last_loc :: PsSpan
  - last_len :: !Int
  - loc :: PsLoc
  - context :: [LayoutContext]
  - lex_state :: [Int]
  - srcfiles :: [FastString]
  - alr_pending_implicit_tokens :: [PsLocated Token]
  - alr_next_token :: Maybe (PsLocated Token)
  - alr_last_loc :: PsSpan
  - alr_context :: [ALRContext]
  - alr_expecting_ocurly :: Maybe ALRLayout
  - alr_justClosedExplicitLetBlock :: Bool
  - eof_pos :: Maybe (Pair RealSrcSpan RealSrcSpan)
  - header_comments :: Maybe [LEpaComment]
  - comment_q :: [LEpaComment]
  - hdk_comments :: OrdList (PsLocated HdkComment)
  }
- newtype P a = P {
  - unP :: PState -> ParseResult a
  }
- class Monad m => MonadP (m :: Type -> Type) where
  - addError :: MsgEnvelope PsMessage -> m ()
  - addWarning :: MsgEnvelope PsMessage -> m ()
  - addFatalError :: MsgEnvelope PsMessage -> m a
  - getBit :: ExtBits -> m Bool
  - allocateCommentsP :: RealSrcSpan -> m EpAnnComments
  - allocatePriorCommentsP :: RealSrcSpan -> m EpAnnComments
  - allocateFinalCommentsP :: RealSrcSpan -> m EpAnnComments
- data ExtBits
  - = FfiBit
  - | InterruptibleFfiBit
  - | CApiFfiBit
  - | ArrowsBit
  - | ThBit
  - | ThQuotesBit
  - | IpBit
  - | OverloadedLabelsBit
  - | ExplicitForallBit
  - | BangPatBit
  - | PatternSynonymsBit
  - | HaddockBit
  - | MagicHashBit
  - | RecursiveDoBit
  - | QualifiedDoBit
  - | UnicodeSyntaxBit
  - | UnboxedParensBit
  - | DatatypeContextsBit
  - | MonadComprehensionsBit
  - | TransformComprehensionsBit
  - | QqBit
  - | RawTokenStreamBit
  - | AlternativeLayoutRuleBit
  - | ALRTransitionalBit
  - | RelaxedLayoutBit
  - | NondecreasingIndentationBit
  - | SafeHaskellBit
  - | TraditionalRecordSyntaxBit
  - | ExplicitNamespacesBit
  - | LambdaCaseBit
  - | BinaryLiteralsBit
  - | NegativeLiteralsBit
  - | HexFloatLiteralsBit
  - | StaticPointersBit
  - | NumericUnderscoresBit
  - | StarIsTypeBit
  - | BlockArgumentsBit
  - | NPlusKPatternsBit
  - | DoAndIfThenElseBit
  - | MultiWayIfBit
  - | GadtSyntaxBit
  - | ImportQualifiedPostBit
  - | LinearTypesBit
  - | NoLexicalNegationBit
  - | OverloadedRecordDotBit
  - | OverloadedRecordUpdateBit
  - | ExtendedLiteralsBit
  - | InRulePragBit
  - | InNestedCommentBit
  - | UsePosPragsBit
- data HdkComment
  - = HdkCommentNext HsDocString
  - | HdkCommentPrev HsDocString
  - | HdkCommentNamed String HsDocString
  - | HdkCommentSection Int HsDocString
- data ParserOpts = ParserOpts {
  - pExtsBitmap :: !ExtsBitmap
  - pDiagOpts :: !DiagOpts
  - pSupportedExts :: [String]
  }
- data ParseResult a :: TYPE ('SumRep '['TupleRep '[LiftedRep, LiftedRep], LiftedRep]) where
  - pattern PFailed :: PState -> ParseResult a
  - pattern POk :: PState -> a -> ParseResult a
- warnopt :: WarningFlag -> ParserOpts -> Bool
- failMsgP :: (SrcSpan -> MsgEnvelope PsMessage) -> P a
- failLocMsgP :: RealSrcLoc -> RealSrcLoc -> (SrcSpan -> MsgEnvelope PsMessage) -> P a
- getPState :: P PState
- setSrcLoc :: RealSrcLoc -> P ()
- getRealSrcLoc :: P RealSrcLoc
- setLastToken :: PsSpan -> Int -> P ()
- adjustChar :: Char -> Word8
- nextIsEOF :: P Bool
- pushLexState :: Int -> P ()
- popLexState :: P Int
- getLexState :: P Int
- activeContext :: P Bool
- xtest :: ExtBits -> ExtsBitmap -> Bool
- xset :: ExtBits -> ExtsBitmap -> ExtsBitmap
- xunset :: ExtBits -> ExtsBitmap -> ExtsBitmap
- mkParserOpts :: EnumSet Extension -> DiagOpts -> [String] -> Bool -> Bool -> Bool -> Bool -> ParserOpts
- disableHaddock :: ParserOpts -> ParserOpts
- initPragState :: ParserOpts -> StringBuffer -> RealSrcLoc -> PState
- getCommentsFor :: MonadP m => SrcSpan -> m EpAnnComments
- getPriorCommentsFor :: MonadP m => SrcSpan -> m EpAnnComments
- getFinalCommentsFor :: MonadP m => SrcSpan -> m EpAnnComments
- getEofPos :: P (Maybe (Pair RealSrcSpan RealSrcSpan))
- addPsMessage :: SrcSpan -> PsMessage -> P ()
- getPsErrorMessages :: PState -> Messages PsMessage
- popContext :: P ()
- pushModuleContext :: P ()
- srcParseFail :: P a
- lexer :: Bool -> (Located Token -> P a) -> P a
- lexerDbg :: Bool -> (Located Token -> P a) -> P a
- lexTokenStream :: ParserOpts -> StringBuffer -> RealSrcLoc -> ParseResult [Located Token]
- mkParensEpAnn :: RealSrcSpan -> (AddEpAnn, AddEpAnn)
- allocateComments :: RealSrcSpan -> [LEpaComment] -> ([LEpaComment], [LEpaComment])
- allocatePriorComments :: RealSrcSpan -> [LEpaComment] -> Maybe [LEpaComment] -> (Maybe [LEpaComment], [LEpaComment], [LEpaComment])
- allocateFinalComments :: RealSrcSpan -> [LEpaComment] -> Maybe [LEpaComment] -> (Maybe [LEpaComment], [LEpaComment], [LEpaComment])
- commentToAnnotation :: RealLocated Token -> LEpaComment
- module GHC.Utils.Panic
- data CompileReason
  - = MustCompile
  - | RecompBecause !RecompReason
- hsc_type_env_vars :: HscEnv -> KnotVars (IORef TypeEnv)
- hscUpdateHUG :: (HomeUnitGraph -> HomeUnitGraph) -> HscEnv -> HscEnv
- hsc_HUG :: HscEnv -> HomeUnitGraph
- data GhcMessage where
  - GhcPsMessage :: PsMessage -> GhcMessage
  - GhcTcRnMessage :: TcRnMessage -> GhcMessage
  - GhcDsMessage :: DsMessage -> GhcMessage
  - GhcDriverMessage :: DriverMessage -> GhcMessage
  - GhcUnknownMessage :: UnknownDiagnostic (DiagnosticOpts GhcMessage) -> GhcMessage
- getKey :: Unique -> Int
- module GHC.Driver.Env.KnotVars
- module GHC.Linker.Types
- module GHC.Types.Unique.Map
- module GHC.Utils.TmpFs
- module GHC.Unit.Finder.Types
- module GHC.Unit.Env
- module GHC.Driver.Phases
- data Extension
  - = OverlappingInstances
  - | UndecidableInstances
  - | IncoherentInstances
  - | UndecidableSuperClasses
  - | MonomorphismRestriction
  - | MonoLocalBinds
  - | DeepSubsumption
  - | RelaxedPolyRec
  - | ExtendedDefaultRules
  - | ForeignFunctionInterface
  - | UnliftedFFITypes
  - | InterruptibleFFI
  - | CApiFFI
  - | GHCForeignImportPrim
  - | JavaScriptFFI
  - | ParallelArrays
  - | Arrows
  - | TemplateHaskell
  - | TemplateHaskellQuotes
  - | QualifiedDo
  - | QuasiQuotes
  - | ImplicitParams
  - | ImplicitPrelude
  - | ScopedTypeVariables
  - | AllowAmbiguousTypes
  - | UnboxedTuples
  - | UnboxedSums
  - | UnliftedNewtypes
  - | UnliftedDatatypes
  - | BangPatterns
  - | TypeFamilies
  - | TypeFamilyDependencies
  - | TypeInType
  - | OverloadedStrings
  - | OverloadedLists
  - | NumDecimals
  - | DisambiguateRecordFields
  - | RecordWildCards
  - | NamedFieldPuns
  - | ViewPatterns
  - | GADTs
  - | GADTSyntax
  - | NPlusKPatterns
  - | DoAndIfThenElse
  - | BlockArguments
  - | RebindableSyntax
  - | ConstraintKinds
  - | PolyKinds
  - | DataKinds
  - | TypeData
  - | InstanceSigs
  - | ApplicativeDo
  - | LinearTypes
  - | StandaloneDeriving
  - | DeriveDataTypeable
  - | AutoDeriveTypeable
  - | DeriveFunctor
  - | DeriveTraversable
  - | DeriveFoldable
  - | DeriveGeneric
  - | DefaultSignatures
  - | DeriveAnyClass
  - | DeriveLift
  - | DerivingStrategies
  - | DerivingVia
  - | TypeSynonymInstances
  - | FlexibleContexts
  - | FlexibleInstances
  - | ConstrainedClassMethods
  - | MultiParamTypeClasses
  - | NullaryTypeClasses
  - | FunctionalDependencies
  - | UnicodeSyntax
  - | ExistentialQuantification
  - | MagicHash
  - | EmptyDataDecls
  - | KindSignatures
  - | RoleAnnotations
  - | ParallelListComp
  - | TransformListComp
  - | MonadComprehensions
  - | GeneralizedNewtypeDeriving
  - | RecursiveDo
  - | PostfixOperators
  - | TupleSections
  - | PatternGuards
  - | LiberalTypeSynonyms
  - | RankNTypes
  - | ImpredicativeTypes
  - | TypeOperators
  - | ExplicitNamespaces
  - | PackageImports
  - | ExplicitForAll
  - | AlternativeLayoutRule
  - | AlternativeLayoutRuleTransitional
  - | DatatypeContexts
  - | NondecreasingIndentation
  - | RelaxedLayout
  - | TraditionalRecordSyntax
  - | LambdaCase
  - | MultiWayIf
  - | BinaryLiterals
  - | NegativeLiterals
  - | HexFloatLiterals
  - | DuplicateRecordFields
  - | OverloadedLabels
  - | EmptyCase
  - | PatternSynonyms
  - | PartialTypeSignatures
  - | NamedWildCards
  - | StaticPointers
  - | TypeApplications
  - | Strict
  - | StrictData
  - | EmptyDataDeriving
  - | NumericUnderscores
  - | QuantifiedConstraints
  - | StarIsType
  - | ImportQualifiedPost
  - | CUSKs
  - | StandaloneKindSignatures
  - | LexicalNegation
  - | FieldSelectors
  - | OverloadedRecordDot
  - | OverloadedRecordUpdate
  - | TypeAbstractions
  - | ExtendedLiterals
- mkCgInteractiveGuts :: CgGuts -> CgInteractiveGuts
- justBytecode :: Linkable -> HomeModLinkable
- justObjects :: Linkable -> HomeModLinkable
- emptyHomeModInfoLinkable :: HomeModLinkable
- homeModInfoByteCode :: HomeModInfo -> Maybe Linkable
- homeModInfoObject :: HomeModInfo -> Maybe Linkable
- groupOrigin :: MatchGroup p body -> XMG p body
- isVisibleFunArg :: FunTyFlag -> Bool
- lookupGlobalRdrEnv :: GlobalRdrEnvX GREInfo -> OccName -> [GlobalRdrEltX GREInfo]

# Session

data DynFlags #

Contains not only a collection of `GeneralFlag`s but also a plethora of information relating to the compilation of a single file or GHC session

extensions :: DynFlags -> [OnOff Extension] #

extensionFlags :: DynFlags -> EnumSet Extension #

targetPlatform :: DynFlags -> Platform #

packageFlags :: DynFlags -> [PackageFlag] #

The `-package` and `-hide-package` flags from the command-line. In *reverse* order that they're specified on the command line.

generalFlags :: DynFlags -> EnumSet GeneralFlag #

warningFlags :: DynFlags -> EnumSet WarningFlag #

topDir :: DynFlags -> FilePath #

hiDir :: DynFlags -> Maybe String #

tmpDir :: DynFlags -> TempDir #

importPaths :: DynFlags -> [FilePath] #

useColor :: DynFlags -> OverridingBool #

canUseColor :: DynFlags -> Bool #

useUnicode :: DynFlags -> Bool #

objectDir :: DynFlags -> Maybe String #

flagsForCompletion :: Bool -> [String] #

Make a list of flags for shell completion. Filter all available flags into two groups, for interactive GHC vs all other.

setImportPaths :: [FilePath] -> DynFlags -> DynFlags #

outputFile :: DynFlags -> Maybe String #

pluginModNames :: DynFlags -> [ModuleName] #

the `-fplugin` flags given on the command line, in *reverse* order that they're specified on the command line.

refLevelHoleFits :: DynFlags -> Maybe Int #

Maximum level of refinement for refinement hole fits in typed hole error messages

maxRefHoleFits :: DynFlags -> Maybe Int #

Maximum number of refinement hole fits to show in typed hole error messages

maxValidHoleFits :: DynFlags -> Maybe Int #

Maximum number of hole fits to show in typed hole error messages

setOutputFile :: Maybe String -> DynFlags -> DynFlags #

lookupType :: HscEnv -> Name -> IO (Maybe TyThing) #

Find the `TyThing` for the given `Name` by using all the resources at our disposal: the compiled modules in the `HomePackageTable` and the compiled modules in other packages that live in `PackageTypeEnv`. Note that this does NOT look up the `TyThing` in the module being compiled: you have to do that yourself, if desired

needWiredInHomeIface :: TyThing -> Bool #

loadWiredInHomeIface :: Name -> IfM lcl () #

An `IfM` function to load the home interface for a wired-in thing, so that we're sure that we see its instance declarations and rules See Note [Loading instances for wired-in things]

readIface :: DynFlags -> NameCache -> Module -> FilePath -> IO (MaybeErr ReadInterfaceError ModIface) #

`readIface` tries just the one file.

Failed err = file not found, or unreadable, or illegible Succeeded iface = successfully found and parsed

loadSysInterface :: SDoc -> Module -> IfM lcl ModIface #

Loads a system interface and throws an exception if it fails

importDecl :: Name -> IfM lcl (MaybeErr IfaceMessage TyThing) #

type CommandLineOption = String #

Command line options gathered from the -PModule.Name:stuff syntax are given to you as this type

sPgm_F :: Settings -> String #

settings :: DynFlags -> Settings #

"unbuild" a `Settings` from a `DynFlags`. This shouldn't be needed in the vast majority of code. But GHCi questionably uses this to produce a default `DynFlags` from which to compute a flags diff for printing.

gopt :: GeneralFlag -> DynFlags -> Bool #

Test whether a `GeneralFlag` is set

Note that `dynamicNow` (i.e., dynamic objects built with `-dynamic-too`) always implicitly enables Opt_PIC, Opt_ExternalDynamicRefs, and disables Opt_SplitSections.

gopt_set :: DynFlags -> GeneralFlag -> DynFlags #

Set a `GeneralFlag`

gopt_unset :: DynFlags -> GeneralFlag -> DynFlags #

Unset a `GeneralFlag`

wopt :: WarningFlag -> DynFlags -> Bool #

Test whether a `WarningFlag` is set

wopt_set :: DynFlags -> WarningFlag -> DynFlags #

Set a `WarningFlag`

xFlags :: [FlagSpec Extension] #

These -Xblah flags can all be reversed with -XNoblah

xopt :: Extension -> DynFlags -> Bool #

Test whether a `Extension` is set

xopt_unset :: DynFlags -> Extension -> DynFlags #

Unset a `Extension`

xopt_set :: DynFlags -> Extension -> DynFlags #

Set a `Extension`

data FlagSpec flag #

Constructors

FlagSpec |

Fields

- flagSpecName :: String

  Flag in string form

- flagSpecFlag :: flag

  Flag in internal form

- flagSpecAction :: TurnOnFlag -> DynP ()

  Extra action to run when the flag is found Typically, emit a warning or error

- flagSpecGhcMode :: GhcFlagMode

  In which ghc mode the flag has effect

data WarningFlag #

Constructors

Opt_WarnDuplicateExports |
Opt_WarnDuplicateConstraints |
Opt_WarnRedundantConstraints |
Opt_WarnHiShadows |
Opt_WarnImplicitPrelude |
Opt_WarnIncompletePatterns |
Opt_WarnIncompleteUniPatterns |
Opt_WarnIncompletePatternsRecUpd |
Opt_WarnOverflowedLiterals |
Opt_WarnEmptyEnumerations |
Opt_WarnMissingFields |
Opt_WarnMissingImportList |
Opt_WarnMissingMethods |
Opt_WarnMissingSignatures |
Opt_WarnMissingLocalSignatures |
Opt_WarnNameShadowing |
Opt_WarnOverlappingPatterns |
Opt_WarnTypeDefaults |
Opt_WarnMonomorphism |
Opt_WarnUnusedTopBinds |
Opt_WarnUnusedLocalBinds |
Opt_WarnUnusedPatternBinds |
Opt_WarnUnusedImports |
Opt_WarnUnusedMatches |
Opt_WarnUnusedTypePatterns |
Opt_WarnUnusedForalls |
Opt_WarnUnusedRecordWildcards |
Opt_WarnRedundantBangPatterns |
Opt_WarnRedundantRecordWildcards |
Opt_WarnDeprecatedFlags |
Opt_WarnMissingMonadFailInstances |
Opt_WarnSemigroup |
Opt_WarnDodgyExports |
Opt_WarnDodgyImports |
Opt_WarnOrphans |
Opt_WarnAutoOrphans |
Opt_WarnIdentities |
Opt_WarnTabs |
Opt_WarnUnrecognisedPragmas |
Opt_WarnMisplacedPragmas |
Opt_WarnDodgyForeignImports |
Opt_WarnUnusedDoBind |
Opt_WarnWrongDoBind |
Opt_WarnAlternativeLayoutRuleTransitional |
Opt_WarnUnsafe |
Opt_WarnSafe |
Opt_WarnTrustworthySafe |
Opt_WarnMissedSpecs |
Opt_WarnAllMissedSpecs |
Opt_WarnUnsupportedCallingConventions |
Opt_WarnUnsupportedLlvmVersion |
Opt_WarnMissedExtraSharedLib |
Opt_WarnInlineRuleShadowing |
Opt_WarnTypedHoles |
Opt_WarnPartialTypeSignatures |
Opt_WarnMissingExportedSignatures |
Opt_WarnUntickedPromotedConstructors |
Opt_WarnDerivingTypeable |
Opt_WarnDeferredTypeErrors |
Opt_WarnDeferredOutOfScopeVariables |
Opt_WarnNonCanonicalMonadInstances |
Opt_WarnNonCanonicalMonadFailInstances |
Opt_WarnNonCanonicalMonoidInstances |
Opt_WarnMissingPatternSynonymSignatures |
Opt_WarnUnrecognisedWarningFlags |
Opt_WarnSimplifiableClassConstraints |
Opt_WarnCPPUndef |
Opt_WarnUnbangedStrictPatterns |
Opt_WarnMissingHomeModules |
Opt_WarnPartialFields |
Opt_WarnMissingExportList |
Opt_WarnInaccessibleCode |
Opt_WarnStarIsType |
Opt_WarnStarBinder |
Opt_WarnImplicitKindVars |
Opt_WarnSpaceAfterBang |
Opt_WarnMissingDerivingStrategies |
Opt_WarnPrepositiveQualifiedModule |
Opt_WarnUnusedPackages |
Opt_WarnInferredSafeImports |
Opt_WarnMissingSafeHaskellMode |
Opt_WarnCompatUnqualifiedImports |
Opt_WarnDerivingDefaults |
Opt_WarnInvalidHaddock |
Opt_WarnOperatorWhitespaceExtConflict |
Opt_WarnOperatorWhitespace |
Opt_WarnAmbiguousFields |
Opt_WarnImplicitLift |
Opt_WarnMissingKindSignatures |
Opt_WarnMissingPolyKindSignatures |
Opt_WarnMissingExportedPatternSynonymSignatures |
Opt_WarnRedundantStrictnessFlags |
Opt_WarnForallIdentifier |
Opt_WarnUnicodeBidirectionalFormatCharacters |
Opt_WarnGADTMonoLocalBinds |
Opt_WarnTypeEqualityOutOfScope |
Opt_WarnTypeEqualityRequiresOperators |
Opt_WarnLoopySuperclassSolve |
Opt_WarnTermVariableCapture |
Opt_WarnMissingRoleAnnotations |
Opt_WarnImplicitRhsQuantification |
Opt_WarnIncompleteExportWarnings |
Opt_WarnInconsistentFlags |

#### Instances

Instances details

Bounded WarningFlag |
Instance details Defined in GHC.Driver.Flags Methods minBound :: WarningFlag # maxBound :: WarningFlag #
Enum WarningFlag |

Instance details

Defined in GHC.Driver.Flags

Methods

succ :: WarningFlag -> WarningFlag #

pred :: WarningFlag -> WarningFlag #

toEnum :: Int -> WarningFlag #

fromEnum :: WarningFlag -> Int #

enumFrom :: WarningFlag -> [WarningFlag] #

enumFromThen :: WarningFlag -> WarningFlag -> [WarningFlag] #

enumFromTo :: WarningFlag -> WarningFlag -> [WarningFlag] #

enumFromThenTo :: WarningFlag -> WarningFlag -> WarningFlag -> [WarningFlag] #

Show WarningFlag |
Instance details Defined in GHC.Driver.Flags Methods showsPrec :: Int -> WarningFlag -> ShowS # show :: WarningFlag -> String # showList :: [WarningFlag] -> ShowS #
Eq WarningFlag |
Instance details Defined in GHC.Driver.Flags Methods (==) :: WarningFlag -> WarningFlag -> Bool # (/=) :: WarningFlag -> WarningFlag -> Bool #
Ord WarningFlag |
Instance details Defined in GHC.Driver.Flags Methods compare :: WarningFlag -> WarningFlag -> Ordering # (<) :: WarningFlag -> WarningFlag -> Bool # (<=) :: WarningFlag -> WarningFlag -> Bool # (>) :: WarningFlag -> WarningFlag -> Bool # (>=) :: WarningFlag -> WarningFlag -> Bool # max :: WarningFlag -> WarningFlag -> WarningFlag # min :: WarningFlag -> WarningFlag -> WarningFlag #

data GeneralFlag #

Enumerates the simple on-or-off dynamic flags

Constructors

Opt_DumpToFile | Append dump output to files instead of stdout.
Opt_DumpWithWays | Use foo.ways.dumpFlag instead of foo.dumpFlag
Opt_D_dump_minimal_imports |
Opt_DoCoreLinting |
Opt_DoLinearCoreLinting |
Opt_DoStgLinting |
Opt_DoCmmLinting |
Opt_DoAsmLinting |
Opt_DoAnnotationLinting |
Opt_DoBoundsChecking |
Opt_NoLlvmMangler |
Opt_FastLlvm |
Opt_NoTypeableBinds |
Opt_DistinctConstructorTables |
Opt_InfoTableMap |
Opt_InfoTableMapWithFallback |
Opt_InfoTableMapWithStack |
Opt_WarnIsError |
Opt_ShowWarnGroups |
Opt_HideSourcePaths |
Opt_PrintExplicitForalls |
Opt_PrintExplicitKinds |
Opt_PrintExplicitCoercions |
Opt_PrintExplicitRuntimeReps |
Opt_PrintEqualityRelations |
Opt_PrintAxiomIncomps |
Opt_PrintUnicodeSyntax |
Opt_PrintExpandedSynonyms |
Opt_PrintPotentialInstances |
Opt_PrintRedundantPromotionTicks |
Opt_PrintTypecheckerElaboration |
Opt_CallArity |
Opt_Exitification |
Opt_Strictness |
Opt_LateDmdAnal |
Opt_KillAbsence |
Opt_KillOneShot |
Opt_FullLaziness |
Opt_FloatIn |
Opt_LocalFloatOut | Enable floating out of let-bindings in the simplifier
Opt_LocalFloatOutTopLevel | Enable floating out of let-bindings at the top level in the simplifier N.B. See Note [RHS Floating]
Opt_LateSpecialise |
Opt_Specialise |
Opt_SpecialiseAggressively |
Opt_CrossModuleSpecialise |
Opt_PolymorphicSpecialisation |
Opt_InlineGenerics |
Opt_InlineGenericsAggressively |
Opt_StaticArgumentTransformation |
Opt_CSE |
Opt_StgCSE |
Opt_StgLiftLams |
Opt_LiberateCase |
Opt_SpecConstr |
Opt_SpecConstrKeen |
Opt_SpecialiseIncoherents |
Opt_DoLambdaEtaExpansion |
Opt_IgnoreAsserts |
Opt_DoEtaReduction |
Opt_CaseMerge |
Opt_CaseFolding |
Opt_UnboxStrictFields |
Opt_UnboxSmallStrictFields |
Opt_DictsCheap |
Opt_EnableRewriteRules |
Opt_EnableThSpliceWarnings |
Opt_RegsGraph |
Opt_RegsIterative |
Opt_PedanticBottoms |
Opt_LlvmTBAA |
Opt_LlvmFillUndefWithGarbage |
Opt_IrrefutableTuples |
Opt_CmmSink |
Opt_CmmStaticPred |
Opt_CmmElimCommonBlocks |
Opt_CmmControlFlow |
Opt_AsmShortcutting |
Opt_OmitYields |
Opt_FunToThunk |
Opt_DictsStrict |
Opt_DmdTxDictSel | deprecated, no effect and behaviour is now default. Allowed switching of a special demand transformer for dictionary selectors
Opt_Loopification |
Opt_CfgBlocklayout | Use the cfg based block layout algorithm.
Opt_WeightlessBlocklayout | Layout based on last instruction per block.
Opt_CprAnal |
Opt_WorkerWrapper |
Opt_WorkerWrapperUnlift | Do W/W split for unlifting even if we won't unbox anything.
Opt_SolveConstantDicts |
Opt_AlignmentSanitisation |
Opt_CatchNonexhaustiveCases |
Opt_NumConstantFolding |
Opt_CoreConstantFolding |
Opt_FastPAPCalls |
Opt_DoTagInferenceChecks |
Opt_SimplPreInlining |
Opt_IgnoreInterfacePragmas |
Opt_OmitInterfacePragmas |
Opt_ExposeAllUnfoldings |
Opt_WriteInterface |
Opt_WriteHie |
Opt_DisableJsMinifier | render JavaScript pretty-printed instead of minified (compacted)
Opt_AutoSccsOnIndividualCafs |
Opt_ProfCountEntries |
Opt_ProfLateInlineCcs |
Opt_ProfLateCcs |
Opt_ProfManualCcs | Ignore manual SCC annotations
Opt_Pp |
Opt_ForceRecomp |
Opt_IgnoreOptimChanges |
Opt_IgnoreHpcChanges |
Opt_ExcessPrecision |
Opt_EagerBlackHoling |
Opt_NoHsMain |
Opt_SplitSections |
Opt_StgStats |
Opt_HideAllPackages |
Opt_HideAllPluginPackages |
Opt_PrintBindResult |
Opt_Haddock |
Opt_HaddockOptions |
Opt_BreakOnException |
Opt_BreakOnError |
Opt_PrintEvldWithShow |
Opt_PrintBindContents |
Opt_GenManifest |
Opt_EmbedManifest |
Opt_SharedImplib |
Opt_BuildingCabalPackage |
Opt_IgnoreDotGhci |
Opt_GhciSandbox |
Opt_InsertBreakpoints |
Opt_GhciHistory |
Opt_GhciLeakCheck |
Opt_ValidateHie |
Opt_LocalGhciHistory |
Opt_NoIt |
Opt_HelpfulErrors |
Opt_DeferTypeErrors |
Opt_DeferTypedHoles |
Opt_DeferOutOfScopeVariables |

Opt_PIC

    -fPIC

Opt_PIE

    -fPIE

Opt_PICExecutable

    -pie

Opt_ExternalDynamicRefs |
Opt_Ticky |
Opt_Ticky_Allocd |
Opt_Ticky_LNE |
Opt_Ticky_Dyn_Thunk |
Opt_Ticky_Tag |
Opt_Ticky_AP | Use regular thunks even when we could use std ap thunks in order to get entry counts
Opt_CmmThreadSanitizer |
Opt_RPath |
Opt_RelativeDynlibPaths |

Opt_CompactUnwind

    -fcompact-unwind

Opt_Hpc |
Opt_FamAppCache |
Opt_ExternalInterpreter |
Opt_OptimalApplicativeDo |
Opt_VersionMacros |
Opt_WholeArchiveHsLibs |
Opt_SingleLibFolder |
Opt_ExposeInternalSymbols |
Opt_KeepCAFs |
Opt_KeepGoing |
Opt_ByteCode |
Opt_ByteCodeAndObjectCode |
Opt_UnoptimizedCoreForInterpreter |
Opt_LinkRts |
Opt_ErrorSpans |
Opt_DeferDiagnostics |
Opt_DiagnosticsShowCaret |
Opt_PprCaseAsLet |
Opt_PprShowTicks |
Opt_ShowHoleConstraints |
Opt_ShowValidHoleFits |
Opt_SortValidHoleFits |
Opt_SortBySizeHoleFits |
Opt_SortBySubsumHoleFits |
Opt_AbstractRefHoleFits |
Opt_UnclutterValidHoleFits |
Opt_ShowTypeAppOfHoleFits |
Opt_ShowTypeAppVarsOfHoleFits |
Opt_ShowDocsOfHoleFits |
Opt_ShowTypeOfHoleFits |
Opt_ShowProvOfHoleFits |
Opt_ShowMatchesOfHoleFits |
Opt_ShowLoadedModules |
Opt_HexWordLiterals |
Opt_SuppressCoercions |
Opt_SuppressCoercionTypes |
Opt_SuppressVarKinds |
Opt_SuppressModulePrefixes |
Opt_SuppressTypeApplications |
Opt_SuppressIdInfo |
Opt_SuppressUnfoldings |
Opt_SuppressTypeSignatures |
Opt_SuppressUniques |
Opt_SuppressStgExts |
Opt_SuppressStgReps |
Opt_SuppressTicks |
Opt_SuppressTimestamps | Suppress timestamps in dumps
Opt_SuppressCoreSizes | Suppress per binding Core size stats in dumps
Opt_ShowErrorContext |
Opt_AutoLinkPackages |
Opt_ImplicitImportQualified |
Opt_KeepHscppFiles |
Opt_KeepHiDiffs |
Opt_KeepHcFiles |
Opt_KeepSFiles |
Opt_KeepTmpFiles |
Opt_KeepRawTokenStream |
Opt_KeepLlvmFiles |
Opt_KeepHiFiles |
Opt_KeepOFiles |
Opt_BuildDynamicToo |
Opt_WriteIfSimplifiedCore |
Opt_UseBytecodeRatherThanObjects |
Opt_DistrustAllPackages |
Opt_PackageTrust |
Opt_PluginTrustworthy |
Opt_G_NoStateHack |
Opt_G_NoOptCoercion |

#### Instances

Instances details

Enum GeneralFlag |

Instance details

Defined in GHC.Driver.Flags

Methods

succ :: GeneralFlag -> GeneralFlag #

pred :: GeneralFlag -> GeneralFlag #

toEnum :: Int -> GeneralFlag #

fromEnum :: GeneralFlag -> Int #

enumFrom :: GeneralFlag -> [GeneralFlag] #

enumFromThen :: GeneralFlag -> GeneralFlag -> [GeneralFlag] #

enumFromTo :: GeneralFlag -> GeneralFlag -> [GeneralFlag] #

enumFromThenTo :: GeneralFlag -> GeneralFlag -> GeneralFlag -> [GeneralFlag] #

Show GeneralFlag |
Instance details Defined in GHC.Driver.Flags Methods showsPrec :: Int -> GeneralFlag -> ShowS # show :: GeneralFlag -> String # showList :: [GeneralFlag] -> ShowS #
Eq GeneralFlag |
Instance details Defined in GHC.Driver.Flags Methods (==) :: GeneralFlag -> GeneralFlag -> Bool # (/=) :: GeneralFlag -> GeneralFlag -> Bool #

data PackageFlag #

Flags for manipulating packages visibility.

#### Instances

Instances details

Show PackageFlag # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> PackageFlag -> ShowS # show :: PackageFlag -> String # showList :: [PackageFlag] -> ShowS #
Outputable PackageFlag |
Instance details Defined in GHC.Driver.DynFlags Methods ppr :: PackageFlag -> SDoc #
Eq PackageFlag |
Instance details Defined in GHC.Driver.DynFlags Methods (==) :: PackageFlag -> PackageFlag -> Bool # (/=) :: PackageFlag -> PackageFlag -> Bool #

data PackageArg #

We accept flags which make packages visible, but how they select the package varies; this data type reflects what selection criterion is used.

Constructors

PackageArg String | `-package`, by `PackageName`
UnitIdArg Unit | `-package-id`, by `Unit`

#### Instances

Instances details

Show PackageArg |
Instance details Defined in GHC.Driver.DynFlags Methods showsPrec :: Int -> PackageArg -> ShowS # show :: PackageArg -> String # showList :: [PackageArg] -> ShowS #
Outputable PackageArg |
Instance details Defined in GHC.Driver.DynFlags Methods ppr :: PackageArg -> SDoc #
Eq PackageArg |
Instance details Defined in GHC.Driver.DynFlags Methods (==) :: PackageArg -> PackageArg -> Bool # (/=) :: PackageArg -> PackageArg -> Bool #

data ModRenaming #

Represents the renaming that may be associated with an exposed package, e.g. the `rns` part of `-package "foo (rns)"`.

Here are some example parsings of the package flags (where a string literal is punned to be a `ModuleName`:

- `-package foo` is `ModRenaming True []`
- `-package foo ()` is `ModRenaming False []`
- `-package foo (A)` is `ModRenaming False [(A, A)]`
- `-package foo (A as B)` is `ModRenaming False [(A, B)]`
- `-package foo with (A as B)` is `ModRenaming True [(A, B)]`

Constructors

ModRenaming |

Fields

- modRenamingWithImplicit :: Bool

  Bring all exposed modules into scope?

- modRenamings :: [(ModuleName, ModuleName)]

  Bring module `m` into scope under name `n`.

#### Instances

Instances details

Outputable ModRenaming |
Instance details Defined in GHC.Driver.DynFlags Methods ppr :: ModRenaming -> SDoc #
Eq ModRenaming |
Instance details Defined in GHC.Driver.DynFlags Methods (==) :: ModRenaming -> ModRenaming -> Bool # (/=) :: ModRenaming -> ModRenaming -> Bool #

pattern ExposePackage :: String -> PackageArg -> ModRenaming -> PackageFlag #

parseDynamicFlagsCmdLine #

Arguments

:: MonadIO m |
=> DynFlags |
-> [Located String] |
-> m (DynFlags, [Located String], Messages DriverMessage) | Updated `DynFlags`, left-over arguments, and list of warnings.

Parse dynamic flags from a list of command line arguments. Returns the parsed `DynFlags`, the left-over arguments, and a list of warnings. Throws a `UsageError` if errors occurred during parsing (such as unknown flags or missing arguments).

parseDynamicFilePragma #

Arguments

:: MonadIO m |
=> DynFlags |
-> [Located String] |
-> m (DynFlags, [Located String], Messages DriverMessage) | Updated `DynFlags`, left-over arguments, and list of warnings.

Like `parseDynamicFlagsCmdLine` but does not allow the package flags (-package, -hide-package, -ignore-package, -hide-all-packages, -package-db). Used to parse flags set in a modules pragma.

wWarningFlags :: [FlagSpec WarningFlag] #

These `-W<blah>` flags can all be reversed with `-Wno-<blah>`

updOptLevel :: Int -> DynFlags -> DynFlags #

Sets the `DynFlags` to be appropriate to the optimisation level

setUnsafeGlobalDynFlags :: DynFlags -> IO () #

# Linear Haskell

scaledThing :: Scaled a -> a #

# Interface Files

type IfaceExport = AvailInfo #

The original names declared of a certain module that are exported

data IfaceTyCon #

Constructors

IfaceTyCon |

Fields

- ifaceTyConName :: IfExtName
- ifaceTyConInfo :: IfaceTyConInfo

#### Instances

Instances details

NFData IfaceTyCon |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceTyCon -> () #
Binary IfaceTyCon |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceTyCon -> IO () # put :: BinHandle -> IfaceTyCon -> IO (Bin IfaceTyCon) # get :: BinHandle -> IO IfaceTyCon #
Outputable IfaceTyCon |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceTyCon -> SDoc #
Eq IfaceTyCon |
Instance details Defined in GHC.Iface.Type Methods (==) :: IfaceTyCon -> IfaceTyCon -> Bool # (/=) :: IfaceTyCon -> IfaceTyCon -> Bool #

type ModIface = ModIface_ 'ModIfaceFinal #

data ModIface_ (phase :: ModIfacePhase) #

A `ModIface` plus a `ModDetails` summarises everything we know about a compiled module. The `ModIface` is the stuff *before* linking, and can be written out to an interface file. The 'ModDetails is after linking and can be completely recovered from just the `ModIface`.

When we read an interface file, we also construct a `ModIface` from it, except that we explicitly make the `mi_decls` and a few other fields empty; as when reading we consolidate the declarations etc. into a number of indexed maps and environments in the `ExternalPackageState`.

See Note [Strictness in ModIface] to learn about why some fields are strict and others are not.

Constructors

ModIface |

Fields

- mi_module :: !Module

  Name of the module we are for

- mi_sig_of :: !(Maybe Module)

  Are we a sig of another mod?

- mi_hsc_src :: !HscSource

  Boot? Signature?

- mi_deps :: Dependencies

  The dependencies of the module. This is consulted for directly-imported modules, but not for anything else (hence lazy)

- mi_usages :: [Usage]

  Usages; kept sorted so that it's easy to decide whether to write a new iface file (changing usages doesn't affect the hash of this module) NOT STRICT! we read this field lazily from the interface file It is *only* consulted by the recompilation checker

- mi_exports :: ![IfaceExport]

  Exports Kept sorted by (mod,occ), to make version comparisons easier Records the modules that are the declaration points for things exported by this module, and the `OccName`s of those things

- mi_used_th :: !Bool

  Module required TH splices when it was compiled. This disables recompilation avoidance (see #481).

- mi_fixities :: [(OccName, Fixity)]

  Fixities NOT STRICT! we read this field lazily from the interface file

- mi_warns :: IfaceWarnings

  Warnings NOT STRICT! we read this field lazily from the interface file

- mi_anns :: [IfaceAnnotation]

  Annotations NOT STRICT! we read this field lazily from the interface file

- mi_decls :: [IfaceDeclExts phase]

  Type, class and variable declarations The hash of an Id changes if its fixity or deprecations change (as well as its type of course) Ditto data constructors, class operations, except that the hash of the parent class/tycon changes

- mi_extra_decls :: Maybe [IfaceBindingX IfaceMaybeRhs IfaceTopBndrInfo]

  Extra variable definitions which are **NOT** exposed but when combined with mi_decls allows us to restart code generation. See Note [Interface Files with Core Definitions] and Note [Interface File with Core: Sharing RHSs]

- mi_globals :: !(Maybe IfGlobalRdrEnv)

  Binds all the things defined at the top level in the original source code for this module. which is NOT the same as mi_exports, nor mi_decls (which may contains declarations for things not actually defined by the user). Used for GHCi and for inspecting the contents of modules via the GHC API only.

  (We need the source file to figure out the top-level environment, if we didn't compile this module from source then this field contains `Nothing`).

  Strictly speaking this field should live in the `HomeModInfo`, but that leads to more plumbing.

- mi_insts :: [IfaceClsInst]

  Sorted class instance

- mi_fam_insts :: [IfaceFamInst]

  Sorted family instances

- mi_rules :: [IfaceRule]

  Sorted rules

- mi_hpc :: !AnyHpcUsage

  True if this program uses Hpc at any point in the program.

- mi_trust :: !IfaceTrustInfo

  Safe Haskell Trust information for this module.

- mi_trust_pkg :: !Bool

  Do we require the package this module resides in be trusted to trust this module? This is used for the situation where a module is Safe (so doesn't require the package be trusted itself) but imports some trustworthy modules from its own package (which does require its own package be trusted). See Note [Trust Own Package] in GHC.Rename.Names

- mi_complete_matches :: ![IfaceCompleteMatch]
- mi_docs :: !(Maybe Docs)

  Docstrings and related data for use by haddock, the ghci `:doc` command, and other tools.

  `Just _` `=` the module was built with `-haddock`.

- mi_final_exts :: !(IfaceBackendExts phase)

  Either `()` or `ModIfaceBackend` for a fully instantiated interface.

- mi_ext_fields :: !ExtensibleFields

  Additional optional fields, where the Map key represents the field name, resulting in a (size, serialized data) pair. Because the data is intended to be serialized through the internal `Binary` class (increasing compatibility with types using `Name` and `FastString`, such as HIE), this format is chosen over `ByteString`s.

- mi_src_hash :: !Fingerprint

  Hash of the .hs source, used for recompilation checking.

#### Instances

Instances details

Binary ModIface |
Instance details Defined in GHC.Unit.Module.ModIface Methods put_ :: BinHandle -> ModIface -> IO () # put :: BinHandle -> ModIface -> IO (Bin ModIface) # get :: BinHandle -> IO ModIface #
(NFData (IfaceBackendExts phase), NFData (IfaceDeclExts phase)) => NFData (ModIface_ phase) |
Instance details Defined in GHC.Unit.Module.ModIface Methods rnf :: ModIface_ phase -> () #

data HscSource #

Constructors

HsSrcFile | .hs file
HsBootOrSig !HsBootOrSig | .hs-boot or .hsig file

Bundled Patterns

pattern HsigFile :: HscSource |
pattern HsBootFile :: HscSource |

#### Instances

Instances details

Show HscSource |
Instance details Defined in GHC.Types.SourceFile Methods showsPrec :: Int -> HscSource -> ShowS # show :: HscSource -> String # showList :: [HscSource] -> ShowS #
Binary HscSource |
Instance details Defined in GHC.Types.SourceFile Methods put_ :: BinHandle -> HscSource -> IO () # put :: BinHandle -> HscSource -> IO (Bin HscSource) # get :: BinHandle -> IO HscSource #
Eq HscSource |
Instance details Defined in GHC.Types.SourceFile Methods (==) :: HscSource -> HscSource -> Bool # (/=) :: HscSource -> HscSource -> Bool #
Ord HscSource |
Instance details Defined in GHC.Types.SourceFile Methods compare :: HscSource -> HscSource -> Ordering # (<) :: HscSource -> HscSource -> Bool # (<=) :: HscSource -> HscSource -> Bool # (>) :: HscSource -> HscSource -> Bool # (>=) :: HscSource -> HscSource -> Bool # max :: HscSource -> HscSource -> HscSource # min :: HscSource -> HscSource -> HscSource #

data WhereFrom #

Reason for loading an interface file

Used to figure out whether we want to consider loading hi-boot files or not.

Constructors

ImportByUser IsBootInterface |
ImportBySystem |
ImportByPlugin |

#### Instances

Instances details

Outputable WhereFrom |
Instance details Defined in GHC.Iface.Load Methods ppr :: WhereFrom -> SDoc #

loadInterface :: SDoc -> Module -> WhereFrom -> IfM lcl (MaybeErr MissingInterfaceError ModIface) #

loadModuleInterface :: SDoc -> Module -> TcM ModIface #

Load interface directly for a fully qualified `Module`. (This is a fairly rare operation, but in particular it is used to load orphan modules in order to pull their instances into the global package table and to handle some operations in GHCi).

data RecompileRequired #

Constructors

UpToDate | everything is up to date, recompilation is not required
NeedsRecompile !CompileReason | Need to compile the module

#### Instances

Instances details

Monoid RecompileRequired |
Instance details Defined in GHC.Iface.Recomp Methods mempty :: RecompileRequired # mappend :: RecompileRequired -> RecompileRequired -> RecompileRequired # mconcat :: [RecompileRequired] -> RecompileRequired #
Semigroup RecompileRequired |
Instance details Defined in GHC.Iface.Recomp Methods (<>) :: RecompileRequired -> RecompileRequired -> RecompileRequired # sconcat :: NonEmpty RecompileRequired -> RecompileRequired # stimes :: Integral b => b -> RecompileRequired -> RecompileRequired #
Outputable RecompileRequired |
Instance details Defined in GHC.Iface.Recomp Methods ppr :: RecompileRequired -> SDoc #
Eq RecompileRequired |
Instance details Defined in GHC.Iface.Recomp Methods (==) :: RecompileRequired -> RecompileRequired -> Bool # (/=) :: RecompileRequired -> RecompileRequired -> Bool #

mkPartialIface :: HscEnv -> CoreProgram -> ModDetails -> ModSummary -> ModGuts -> PartialModIface #

mkFullIface :: HscEnv -> PartialModIface -> Maybe StgCgInfos -> Maybe CmmCgInfos -> IO ModIface #

Fully instantiate an interface. Adds fingerprints and potentially code generator produced information.

CmmCgInfos is not available when not generating code (-fno-code), or when not generating interface pragmas (-fomit-interface-pragmas). See also Note [Conveying CAF-info and LFInfo between modules] in GHC.StgToCmm.Types.

data IsBootInterface #

Indicates whether a module name is referring to a boot interface (hs-boot file) or regular module (hs file). We need to treat boot modules specially when building compilation graphs, since they break cycles. Regular source files and signature files are treated equivalently.

Constructors

NotBoot |
IsBoot |

#### Instances

Instances details

Data IsBootInterface |

Instance details

Defined in Language.Haskell.Syntax.ImpExp

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IsBootInterface -> c IsBootInterface #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c IsBootInterface #

toConstr :: IsBootInterface -> Constr #

dataTypeOf :: IsBootInterface -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c IsBootInterface) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IsBootInterface) #

gmapT :: (forall b. Data b => b -> b) -> IsBootInterface -> IsBootInterface #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IsBootInterface -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IsBootInterface -> r #

gmapQ :: (forall d. Data d => d -> u) -> IsBootInterface -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> IsBootInterface -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> IsBootInterface -> m IsBootInterface #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IsBootInterface -> m IsBootInterface #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IsBootInterface -> m IsBootInterface #

Show IsBootInterface |
Instance details Defined in Language.Haskell.Syntax.ImpExp Methods showsPrec :: Int -> IsBootInterface -> ShowS # show :: IsBootInterface -> String # showList :: [IsBootInterface] -> ShowS #
Eq IsBootInterface |
Instance details Defined in Language.Haskell.Syntax.ImpExp Methods (==) :: IsBootInterface -> IsBootInterface -> Bool # (/=) :: IsBootInterface -> IsBootInterface -> Bool #
Ord IsBootInterface |

Instance details

Defined in Language.Haskell.Syntax.ImpExp

Methods

compare :: IsBootInterface -> IsBootInterface -> Ordering #

(<) :: IsBootInterface -> IsBootInterface -> Bool #

(<=) :: IsBootInterface -> IsBootInterface -> Bool #

(>) :: IsBootInterface -> IsBootInterface -> Bool #

(>=) :: IsBootInterface -> IsBootInterface -> Bool #

max :: IsBootInterface -> IsBootInterface -> IsBootInterface #

min :: IsBootInterface -> IsBootInterface -> IsBootInterface #

# Fixity

data LexicalFixity #

Captures the fixity of declarations as they are parsed. This is not necessarily the same as the fixity declaration, as the normal fixity may be overridden using parens or backticks.

Constructors

Prefix |
Infix |

#### Instances

Instances details

Data LexicalFixity |

Instance details

Defined in GHC.Types.Fixity

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LexicalFixity -> c LexicalFixity #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LexicalFixity #

toConstr :: LexicalFixity -> Constr #

dataTypeOf :: LexicalFixity -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LexicalFixity) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LexicalFixity) #

gmapT :: (forall b. Data b => b -> b) -> LexicalFixity -> LexicalFixity #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LexicalFixity -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LexicalFixity -> r #

gmapQ :: (forall d. Data d => d -> u) -> LexicalFixity -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> LexicalFixity -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> LexicalFixity -> m LexicalFixity #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LexicalFixity -> m LexicalFixity #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LexicalFixity -> m LexicalFixity #

Outputable LexicalFixity |
Instance details Defined in GHC.Types.Fixity Methods ppr :: LexicalFixity -> SDoc #
Eq LexicalFixity |
Instance details Defined in GHC.Types.Fixity Methods (==) :: LexicalFixity -> LexicalFixity -> Bool # (/=) :: LexicalFixity -> LexicalFixity -> Bool #

data Fixity #

Constructors

Fixity SourceText Int FixityDirection |

#### Instances

Instances details

Data Fixity |

Instance details

Defined in GHC.Types.Fixity

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Fixity -> c Fixity #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Fixity #

toConstr :: Fixity -> Constr #

dataTypeOf :: Fixity -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Fixity) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Fixity) #

gmapT :: (forall b. Data b => b -> b) -> Fixity -> Fixity #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Fixity -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Fixity -> r #

gmapQ :: (forall d. Data d => d -> u) -> Fixity -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Fixity -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity #

Binary Fixity |
Instance details Defined in GHC.Types.Fixity Methods put_ :: BinHandle -> Fixity -> IO () # put :: BinHandle -> Fixity -> IO (Bin Fixity) # get :: BinHandle -> IO Fixity #
Outputable Fixity |
Instance details Defined in GHC.Types.Fixity Methods ppr :: Fixity -> SDoc #
Eq Fixity |
Instance details Defined in GHC.Types.Fixity Methods (==) :: Fixity -> Fixity -> Bool # (/=) :: Fixity -> Fixity -> Bool #

mi_fix :: ModIface -> OccName -> Fixity #

Lookups up a (possibly cached) fixity from a `ModIface`. If one cannot be found, `defaultFixity` is returned instead.

defaultFixity :: Fixity #

lookupFixityRn :: Name -> RnM Fixity #

# ModSummary

data ModSummary #

Data for a module node in a `ModuleGraph`. Module nodes of the module graph are one of:

- A regular Haskell source module
- A hi-boot source module

Constructors

ModSummary |

Fields

- ms_mod :: Module

  Identity of the module

- ms_hsc_src :: HscSource

  The module source either plain Haskell, hs-boot, or hsig

- ms_location :: ModLocation

  Location of the various files belonging to the module

- ms_hs_hash :: Fingerprint

  Content hash of source file

- ms_obj_date :: Maybe UTCTime

  Timestamp of object, if we have one

- ms_dyn_obj_date :: !(Maybe UTCTime)

  Timestamp of dynamic object, if we have one

- ms_iface_date :: Maybe UTCTime

  Timestamp of hi file, if we have one See Note [When source is considered modified] and #9243

- ms_hie_date :: Maybe UTCTime

  Timestamp of hie file, if we have one

- ms_srcimps :: [(PkgQual, Located ModuleName)]

  Source imports of the module

- ms_textual_imps :: [(PkgQual, Located ModuleName)]

  Non-source imports of the module from the module *text*

- ms_ghc_prim_import :: !Bool

  Whether the special module GHC.Prim was imported explicitly

- ms_parsed_mod :: Maybe HsParsedModule

  The parsed, nonrenamed source, if we have it. This is also used to support "inline module syntax" in Backpack files.

- ms_hspp_file :: FilePath

  Filename of preprocessed source file

- ms_hspp_opts :: DynFlags

  Cached flags from `OPTIONS`, `INCLUDE` and `LANGUAGE` pragmas in the modules source code

- ms_hspp_buf :: Maybe StringBuffer

  The actual preprocessed source, if we have it

#### Instances

Instances details

Show ModSummary # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> ModSummary -> ShowS # show :: ModSummary -> String # showList :: [ModSummary] -> ShowS #
NFData ModSummary # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: ModSummary -> () #
Outputable ModSummary |
Instance details Defined in GHC.Unit.Module.ModSummary Methods ppr :: ModSummary -> SDoc #

# HomeModInfo

data HomeModInfo #

Information about modules in the package being compiled

Constructors

HomeModInfo |

Fields

- hm_iface :: !ModIface

  The basic loaded interface file: every loaded module has one of these, even if it is imported from another package

- hm_details :: ModDetails

  Extra information that has been created from the `ModIface` for the module, typically during typechecking

- hm_linkable :: !HomeModLinkable

  The actual artifact we would like to link to access things in this module. See Note [Home module build products]

  `hm_linkable` might be empty:

  1. If this is an .hs-boot module
  2. Temporarily during compilation if we pruned away the old linkable because it was out of date.

  When re-linking a module (`HscNoRecomp`), we construct the `HomeModInfo` by building a new `ModDetails` from the old `ModIface` (only).

#### Instances

Instances details

Show HomeModInfo # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> HomeModInfo -> ShowS # show :: HomeModInfo -> String # showList :: [HomeModInfo] -> ShowS #
NFData HomeModInfo # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: HomeModInfo -> () #

# ModGuts

data ModGuts #

A ModGuts is carried through the compiler, accumulating stuff as it goes There is only one ModGuts at any time, the one for the module being compiled right now. Once it is compiled, a `ModIface` and `ModDetails` are extracted and the ModGuts is discarded.

Constructors

ModGuts |

Fields

- mg_module :: !Module

  Module being compiled

- mg_hsc_src :: HscSource

  Whether it's an hs-boot module

- mg_loc :: SrcSpan

  For error messages from inner passes

- mg_exports :: ![AvailInfo]

  What it exports

- mg_deps :: !Dependencies

  What it depends on, directly or otherwise

- mg_usages :: ![Usage]

  What was used? Used for interfaces.

- mg_used_th :: !Bool

  Did we run a TH splice?

- mg_rdr_env :: !GlobalRdrEnv

  Top-level lexical environment

- mg_fix_env :: !FixityEnv

  Fixities declared in this module. Used for creating interface files.

- mg_tcs :: ![TyCon]

  TyCons declared in this module (includes TyCons for classes)

- mg_insts :: ![ClsInst]

  Class instances declared in this module

- mg_fam_insts :: ![FamInst]

  Family instances declared in this module

- mg_patsyns :: ![PatSyn]

  Pattern synonyms declared in this module

- mg_rules :: ![CoreRule]

  Before the core pipeline starts, contains See Note [Overall plumbing for rules] in GHC.Core.Rules

- mg_binds :: !CoreProgram

  Bindings for this module

- mg_foreign :: !ForeignStubs

  Foreign exports declared in this module

- mg_foreign_files :: ![(ForeignSrcLang, FilePath)]

  Files to be compiled with the C compiler

- mg_warns :: !(Warnings GhcRn)

  Warnings declared in the module

- mg_anns :: [Annotation]

  Annotations declared in this module

- mg_complete_matches :: [CompleteMatch]

  Complete Matches

- mg_hpc_info :: !HpcInfo

  Coverage tick boxes in the module

- mg_modBreaks :: !(Maybe ModBreaks)

  Breakpoints for the module

- mg_inst_env :: InstEnv

  Class instance environment for home-package modules (including this one); c.f. `tcg_inst_env`

- mg_fam_inst_env :: FamInstEnv

  Type-family instance environment for home-package modules (including this one); c.f. `tcg_fam_inst_env`

- mg_boot_exports :: !NameSet
- mg_safe_haskell :: SafeHaskellMode

  Safe Haskell mode

- mg_trust_pkg :: Bool

  Do we need to trust our own package for Safe Haskell? See Note [Trust Own Package] in GHC.Rename.Names

- mg_docs :: !(Maybe Docs)

  Documentation.

#### Instances

Instances details

Show ModGuts # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> ModGuts -> ShowS # show :: ModGuts -> String # showList :: [ModGuts] -> ShowS #
NFData ModGuts # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: ModGuts -> () #

data CgGuts #

A restricted form of `ModGuts` for code generation purposes

Constructors

CgGuts |

Fields

- cg_module :: !Module

  Module being compiled

- cg_tycons :: [TyCon]

  Algebraic data types (including ones that started life as classes); generate constructors and info tables. Includes newtypes, just for the benefit of External Core

- cg_binds :: CoreProgram

  The tidied main bindings, including previously-implicit bindings for record and class selectors, and data constructor wrappers. But *not* data constructor workers; reason: we regard them as part of the code-gen of tycons

- cg_ccs :: [CostCentre]
- cg_foreign :: !ForeignStubs

  Foreign export stubs

- cg_foreign_files :: ![(ForeignSrcLang, FilePath)]
- cg_dep_pkgs :: !(Set UnitId)

  Dependent packages, used to generate #includes for C code gen

- cg_hpc_info :: !HpcInfo

  Program coverage tick box information

- cg_modBreaks :: !(Maybe ModBreaks)

  Module breakpoints

- cg_spt_entries :: [SptEntry]

  Static pointer table entries for static forms defined in the module. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTable

#### Instances

Instances details

Show CgGuts # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> CgGuts -> ShowS # show :: CgGuts -> String # showList :: [CgGuts] -> ShowS #
NFData CgGuts # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: CgGuts -> () #

# ModDetails

data ModDetails #

The `ModDetails` is essentially a cache for information in the `ModIface` for home modules only. Information relating to packages will be loaded into global environments in `ExternalPackageState`.

Constructors

ModDetails |

Fields

- md_exports :: [AvailInfo]
- md_types :: !TypeEnv

  Local type environment for this particular module Includes Ids, TyCons, PatSyns

- md_insts :: InstEnv

  `DFunId`s for the instances in this module

- md_fam_insts :: ![FamInst]
- md_rules :: ![CoreRule]

  Domain may include `Id`s from other modules

- md_anns :: ![Annotation]

  Annotations present in this module: currently they only annotate things also declared in this module

- md_complete_matches :: [CompleteMatch]

  Complete match pragmas for this module

#### Instances

Instances details

Show ModDetails # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> ModDetails -> ShowS # show :: ModDetails -> String # showList :: [ModDetails] -> ShowS #
NFData ModDetails # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: ModDetails -> () #

# HsExpr,

# Var

data Type #

Constructors

TyVarTy Var | Vanilla type or kind variable (*never* a coercion variable)
AppTy Type Type | Type application to something other than a `TyCon`. Parameters: 1) Function: must not be a `TyConApp` or `CastTy`, must be another `AppTy`, or `TyVarTy` See Note [Respecting definitional equality] (EQ1) about the no `CastTy` requirement 2) Argument type

TyConApp TyCon [KindOrType]

Application of a `TyCon`, including newtypes and synonyms. Invariant: saturated applications of `FunTyCon` must use `FunTy` and saturated synonyms must use their own constructors. However, unsaturated `FunTyCon`s do appear as `TyConApp`s. Parameters:

1) Type constructor being applied to.

2) Type arguments. Might not have enough type arguments here to saturate the constructor. Even type synonyms are not necessarily saturated; for example unsaturated type synonyms can appear as the right hand side of a type synonym.

ForAllTy !ForAllTyBinder Type | A Π type. Note [When we quantify over a coercion variable] INVARIANT: If the binder is a coercion variable, it must be mentioned in the Type. See Note [Unused coercion variable in ForAllTy]
LitTy TyLit | Type literals are similar to type constructors.
CastTy Type KindCoercion | A kind cast. The coercion is always nominal. INVARIANT: The cast is never reflexive (EQ2) INVARIANT: The Type is not a CastTy (use TransCo instead) (EQ3) INVARIANT: The Type is not a ForAllTy over a tyvar (EQ4) See Note [Respecting definitional equality]
CoercionTy Coercion | Injection of a Coercion into a type This should only ever be used in the RHS of an AppTy, in the list of a TyConApp, when applying a promoted GADT data constructor

#### Instances

Instances details

Data Type |

Instance details

Defined in GHC.Core.TyCo.Rep

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Type -> c Type #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Type #

toConstr :: Type -> Constr #

dataTypeOf :: Type -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Type) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Type) #

gmapT :: (forall b. Data b => b -> b) -> Type -> Type #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Type -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Type -> r #

gmapQ :: (forall d. Data d => d -> u) -> Type -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Type -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Type -> m Type #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Type -> m Type #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Type -> m Type #

NFData Type # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: Type -> () #
Outputable Type |
Instance details Defined in GHC.Core.TyCo.Rep Methods ppr :: Type -> SDoc #
Eq (DeBruijn Type) |
Instance details Defined in GHC.Core.Map.Type Methods (==) :: DeBruijn Type -> DeBruijn Type -> Bool # (/=) :: DeBruijn Type -> DeBruijn Type -> Bool #

pattern FunTy :: FunTyFlag -> Type -> Type -> Type #

pattern ConPatIn :: Located (ConLikeP GhcPs) -> HsConPatDetails GhcPs -> Pat GhcPs #

conPatDetails :: Pat p -> Maybe (HsConPatDetails p) #

mapConPatDetail :: (HsConPatDetails p -> Maybe (HsConPatDetails p)) -> Pat p -> Maybe (Pat p) #

mkVisFunTys :: [Scaled Type] -> Type -> Type #

# Specs

data ImpDeclSpec #

Import Declaration Specification

Describes a particular import declaration and is shared among all the `Provenance`s for that decl

Constructors

ImpDeclSpec |

Fields

- is_mod :: !Module

  Module imported, e.g. `import Muggle` Note the `Muggle` may well not be the defining module for this thing!

- is_as :: !ModuleName

  Import alias, e.g. from `as M` (or `Muggle` if there is no `as` clause)

- is_qual :: !Bool

  Was this import qualified?

- is_dloc :: !SrcSpan

  The location of the entire import declaration

#### Instances

Instances details

Data ImpDeclSpec |

Instance details

Defined in GHC.Types.Name.Reader

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ImpDeclSpec -> c ImpDeclSpec #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ImpDeclSpec #

toConstr :: ImpDeclSpec -> Constr #

dataTypeOf :: ImpDeclSpec -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ImpDeclSpec) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ImpDeclSpec) #

gmapT :: (forall b. Data b => b -> b) -> ImpDeclSpec -> ImpDeclSpec #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ImpDeclSpec -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ImpDeclSpec -> r #

gmapQ :: (forall d. Data d => d -> u) -> ImpDeclSpec -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ImpDeclSpec -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ImpDeclSpec -> m ImpDeclSpec #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ImpDeclSpec -> m ImpDeclSpec #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ImpDeclSpec -> m ImpDeclSpec #

Eq ImpDeclSpec |
Instance details Defined in GHC.Types.Name.Reader Methods (==) :: ImpDeclSpec -> ImpDeclSpec -> Bool # (/=) :: ImpDeclSpec -> ImpDeclSpec -> Bool #

data ImportSpec #

Import Specification

The `ImportSpec` of something says how it came to be imported It's quite elaborate so that we can give accurate unused-name warnings.

Constructors

ImpSpec |

Fields

- is_decl :: !ImpDeclSpec
- is_item :: !ImpItemSpec

#### Instances

Instances details

Data ImportSpec |

Instance details

Defined in GHC.Types.Name.Reader

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ImportSpec -> c ImportSpec #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ImportSpec #

toConstr :: ImportSpec -> Constr #

dataTypeOf :: ImportSpec -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ImportSpec) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ImportSpec) #

gmapT :: (forall b. Data b => b -> b) -> ImportSpec -> ImportSpec #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ImportSpec -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ImportSpec -> r #

gmapQ :: (forall d. Data d => d -> u) -> ImportSpec -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ImportSpec -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ImportSpec -> m ImportSpec #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ImportSpec -> m ImportSpec #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ImportSpec -> m ImportSpec #

NFData ImportSpec |
Instance details Defined in GHC.Types.Name.Reader Methods rnf :: ImportSpec -> () #
Outputable ImportSpec |
Instance details Defined in GHC.Types.Name.Reader Methods ppr :: ImportSpec -> SDoc #
Eq ImportSpec |
Instance details Defined in GHC.Types.Name.Reader Methods (==) :: ImportSpec -> ImportSpec -> Bool # (/=) :: ImportSpec -> ImportSpec -> Bool #

# SourceText

data SourceText #

Constructors

SourceText FastString |
NoSourceText | For when code is generated, e.g. TH, deriving. The pretty printer will then make its own representation of the item.

#### Instances

Instances details

Data SourceText |

Instance details

Defined in GHC.Types.SourceText

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SourceText -> c SourceText #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SourceText #

toConstr :: SourceText -> Constr #

dataTypeOf :: SourceText -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SourceText) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SourceText) #

gmapT :: (forall b. Data b => b -> b) -> SourceText -> SourceText #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SourceText -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SourceText -> r #

gmapQ :: (forall d. Data d => d -> u) -> SourceText -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SourceText -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SourceText -> m SourceText #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceText -> m SourceText #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceText -> m SourceText #

Show SourceText |
Instance details Defined in GHC.Types.SourceText Methods showsPrec :: Int -> SourceText -> ShowS # show :: SourceText -> String # showList :: [SourceText] -> ShowS #
NFData SourceText |
Instance details Defined in GHC.Types.SourceText Methods rnf :: SourceText -> () #
Binary SourceText |
Instance details Defined in GHC.Types.SourceText Methods put_ :: BinHandle -> SourceText -> IO () # put :: BinHandle -> SourceText -> IO (Bin SourceText) # get :: BinHandle -> IO SourceText #
Outputable SourceText |
Instance details Defined in GHC.Types.SourceText Methods ppr :: SourceText -> SDoc #
Eq SourceText |
Instance details Defined in GHC.Types.SourceText Methods (==) :: SourceText -> SourceText -> Bool # (/=) :: SourceText -> SourceText -> Bool #
type Anno (SourceText, RuleName) |
Instance details Defined in GHC.Hs.Decls type Anno (SourceText, RuleName) = SrcAnn NoEpAnns

# Ways

data Way #

A way

Don't change the constructor order as it is used by `waysTag` to create a unique tag (e.g. thr_debug_p) which is expected by other tools (e.g. Cabal).

#### Instances

Instances details

Read Way |
Instance details Defined in GHC.Platform.Ways Methods readsPrec :: Int -> ReadS Way # readList :: ReadS [Way] # readPrec :: ReadPrec Way # readListPrec :: ReadPrec [Way] #
Show Way |
Instance details Defined in GHC.Platform.Ways Methods showsPrec :: Int -> Way -> ShowS # show :: Way -> String # showList :: [Way] -> ShowS #
Eq Way |
Instance details Defined in GHC.Platform.Ways Methods (==) :: Way -> Way -> Bool # (/=) :: Way -> Way -> Bool #
Ord Way |
Instance details Defined in GHC.Platform.Ways Methods compare :: Way -> Way -> Ordering # (<) :: Way -> Way -> Bool # (<=) :: Way -> Way -> Bool # (>) :: Way -> Way -> Bool # (>=) :: Way -> Way -> Bool # max :: Way -> Way -> Way # min :: Way -> Way -> Way #

wayGeneralFlags :: Platform -> Way -> [GeneralFlag] #

Turn these flags on when enabling this way

wayUnsetGeneralFlags :: Platform -> Way -> [GeneralFlag] #

Turn these flags off when enabling this way

# AvailInfo

data AvailInfo #

Records what things are "available", i.e. in scope

#### Instances

Instances details

Data AvailInfo |

Instance details

Defined in GHC.Types.Avail

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AvailInfo -> c AvailInfo #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AvailInfo #

toConstr :: AvailInfo -> Constr #

dataTypeOf :: AvailInfo -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AvailInfo) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AvailInfo) #

gmapT :: (forall b. Data b => b -> b) -> AvailInfo -> AvailInfo #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AvailInfo -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AvailInfo -> r #

gmapQ :: (forall d. Data d => d -> u) -> AvailInfo -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> AvailInfo -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> AvailInfo -> m AvailInfo #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AvailInfo -> m AvailInfo #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AvailInfo -> m AvailInfo #

NFData AvailInfo |
Instance details Defined in GHC.Types.Avail Methods rnf :: AvailInfo -> () #
Binary AvailInfo |
Instance details Defined in GHC.Types.Avail Methods put_ :: BinHandle -> AvailInfo -> IO () # put :: BinHandle -> AvailInfo -> IO (Bin AvailInfo) # get :: BinHandle -> IO AvailInfo #
Outputable AvailInfo |
Instance details Defined in GHC.Types.Avail Methods ppr :: AvailInfo -> SDoc #

pattern AvailName :: Name -> AvailInfo #

pattern AvailFL :: FieldLabel -> AvailInfo #

pattern AvailTC :: Name -> [Name] -> [FieldLabel] -> AvailInfo #

availName :: AvailInfo -> Name #

Just the main name made available, i.e. not the available pieces of type or class brought into scope by the `AvailInfo`

availNames :: AvailInfo -> [Name] #

Names and fields made available by the availability information.

availsToNameSet :: [AvailInfo] -> NameSet #

# TcGblEnv

data TcGblEnv #

`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

TcGblEnv |

Fields

- tcg_mod :: Module

  Module being compiled

- tcg_semantic_mod :: Module

  If a signature, the backing module See also Note [Identity versus semantic module]

- tcg_src :: HscSource

  What kind of module (regular Haskell, hs-boot, hsig)

- tcg_rdr_env :: GlobalRdrEnv

  Top level envt; used during renaming

- tcg_default :: Maybe [Type]

  Types used for defaulting. `Nothing` => no `default` decl

- tcg_fix_env :: FixityEnv

  Just for things in this module

- tcg_type_env :: TypeEnv

  Global 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 :: !InstEnv

  Instance 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 :: !FamInstEnv

  Ditto for family instances NB. BangPattern is to fix a leak, see #15111

- tcg_ann_env :: AnnEnv

  And for annotations

- tcg_exports :: [AvailInfo]

  What is exported

- tcg_imports :: ImportAvails

  Information 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:

  1. All of the modules you directly imported (tcRnImports)
  2. The orphans (only!) of all imported modules in a GHCi session (runTcInteractive)
  3. The module that instantiated a signature
  4. 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 :: DefUses
- tcg_used_gres :: TcRef [GlobalRdrElt]

  INVARIANT: all these GREs were imported; that is, they all have a non-empty gre_imp field.

- tcg_keep :: TcRef NameSet
- tcg_th_used :: TcRef Bool

  `True` <=> 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 Bool

  `True` <=> 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 OccSet

  Allows us to choose unique DFun names.

- 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 NameSet

  Exact 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 THDocs

  Docs added in Template Haskell via `putDoc`.

- tcg_ev_binds :: Bag EvBind
- tcg_tr_module :: Maybe Id
- tcg_binds :: LHsBinds GhcTc
- tcg_sigs :: NameSet
- tcg_imp_specs :: [LTcSpecPrag]
- tcg_warns :: Warnings GhcRn
- tcg_anns :: [Annotation]
- tcg_tcs :: [TyCon]
- tcg_ksigs :: NameSet
- tcg_insts :: [ClsInst]
- tcg_fam_insts :: [FamInst]
- tcg_rules :: [LRuleDecl GhcTc]
- tcg_fords :: [LForeignDecl GhcTc]
- tcg_patsyns :: [PatSyn]
- tcg_doc_hdr :: Maybe (LHsDoc GhcRn)

  Maybe Haddock header docs

- tcg_hpc :: !AnyHpcUsage

  `True` if any part of the prog uses hpc instrumentation. NB. BangPattern is to fix a leak, see #15111

- tcg_self_boot :: SelfBootInfo

  Whether this module has a corresponding hi-boot file

- tcg_main :: Maybe Name

  The Name of the main function, if this module is the main module.

- tcg_safe_infer :: TcRef Bool

  Has 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 `TyCon`s.

- 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 :: RealSrcSpan

  The RealSrcSpan this module came from

- tcg_static_wc :: TcRef WantedConstraints

  Wanted constraints of static forms. See Note [Constraints in static forms].

- tcg_complete_matches :: !CompleteMatches

  Tracking indices for cost centre annotations

- tcg_cc_st :: TcRef CostCentreState
- tcg_next_wrapper_num :: TcRef (ModuleEnv Int)

  See Note [Generating fresh names for FFI wrappers]

#### Instances

Instances details

ContainsModule TcGblEnv |
Instance details Defined in GHC.Tc.Types Methods extractModule :: TcGblEnv -> Module #

# Parsing and LExer types

data HsModule p #

Haskell Module

All we actually declare here is the top-level structure for a module.

Constructors

HsModule

`AnnKeywordId`s

- `AnnModule`,`AnnWhere`
- `AnnOpen`,`AnnSemi`, `AnnClose` for explicit braces and semi around hsmodImports,hsmodDecls if this style is used.

Fields

- hsmodExt :: XCModule p

  HsModule extension point

- hsmodName :: Maybe (XRec p ModuleName)

  `Nothing`: "module X where" is omitted (in which case the next field is Nothing too)

- hsmodExports :: Maybe (XRec p [LIE p])

  Export list

  - `Nothing`: export list omitted, so export everything
  - `Just []`: export nothing
  - `Just [...]`: as you would expect...
  - `AnnKeywordId`s : `AnnOpen` ,`AnnClose`
- hsmodImports :: [LImportDecl p]
- hsmodDecls :: [LHsDecl p]

  Type, class, value, and interface signature decls

XModule !(XXModule p) |

#### Instances

Instances details

NFData (HsModule a) # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: HsModule a -> () #
HasHaddock (Located (HsModule GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located (HsModule GhcPs) -> HdkA (Located (HsModule GhcPs))

type ParsedSource = Located (HsModule GhcPs) #

type RenamedSource = (HsGroup GhcRn, [LImportDecl GhcRn], Maybe [(LIE GhcRn, Avails)], Maybe (LHsDoc GhcRn)) #

# Compilation Main

data HscEnv #

HscEnv is like `Session`, except that some of the fields are immutable. An HscEnv is used to compile a single module from plain Haskell source code (after preprocessing) to either C, assembly or C--. It's also used to store the dynamic linker state to allow for multiple linkers in the same address space. Things like the module graph don't change during a single compilation.

Historical note: "hsc" used to be the name of the compiler binary, when there was a separate driver and compiler. To compile a single module, the driver would invoke hsc on the source code... so nowadays we think of hsc as the layer of the compiler that deals with compiling a single module.

#### Instances

Instances details

ContainsDynFlags HscEnv |
Instance details Defined in GHC.Driver.Env.Types Methods extractDynFlags :: HscEnv -> DynFlags #

runGhc #

Arguments

:: Maybe FilePath | See argument to `initGhcMonad`.
-> Ghc a | The action to perform.
-> IO a |

Run function for the `Ghc` monad.

It initialises the GHC session and warnings via `initGhcMonad`. Each call to this function will create a new session which should not be shared among several threads.

Any errors not handled inside the `Ghc` action are propagated as IO exceptions.

unGhc :: Ghc a -> Session -> IO a #

data Session #

The Session is a handle to the complete state of a compilation session. A compilation session consists of a set of modules constituting the current program or library, the context for interactive evaluation, and various caches.

Constructors

Session !(IORef HscEnv) |

modifySession :: GhcMonad m => (HscEnv -> HscEnv) -> m () #

Set the current session to the result of applying the current session to the argument.

getSession :: GhcMonad m => m HscEnv #

setSessionDynFlags :: (HasCallStack, GhcMonad m) => DynFlags -> m () #

getSessionDynFlags :: GhcMonad m => m DynFlags #

Grabs the DynFlags from the Session

class (Functor m, ExceptionMonad m, HasDynFlags m, HasLogger m) => GhcMonad (m :: Type -> Type) #

A monad that has all the features needed by GHC API calls.

In short, a GHC monad

- allows embedding of IO actions,
- can log warnings,
- allows handling of (extensible) exceptions, and
- maintains a current session.

If you do not use `Ghc` or `GhcT`, make sure to call `initGhcMonad` before any call to the GHC API functions can occur.

Minimal complete definition

getSession, setSession

#### Instances

Instances details

GhcMonad BkpM |
Instance details Defined in GHC.Driver.Backpack Methods getSession :: BkpM HscEnv # setSession :: HscEnv -> BkpM () #
GhcMonad Ghc |
Instance details Defined in GHC.Driver.Monad Methods getSession :: Ghc HscEnv # setSession :: HscEnv -> Ghc () #
ExceptionMonad m => GhcMonad (GhcT m) |
Instance details Defined in GHC.Driver.Monad Methods getSession :: GhcT m HscEnv # setSession :: HscEnv -> GhcT m () #

data Ghc a #

A minimal implementation of a `GhcMonad`. If you need a custom monad, e.g., to maintain additional state consider wrapping this monad or using `GhcT`.

#### Instances

Instances details

MonadFail Ghc |
Instance details Defined in GHC.Driver.Monad Methods fail :: String -> Ghc a #
MonadFix Ghc |
Instance details Defined in GHC.Driver.Monad Methods mfix :: (a -> Ghc a) -> Ghc a #
MonadIO Ghc |
Instance details Defined in GHC.Driver.Monad Methods liftIO :: IO a -> Ghc a #
Applicative Ghc |
Instance details Defined in GHC.Driver.Monad Methods pure :: a -> Ghc a # (<*>) :: Ghc (a -> b) -> Ghc a -> Ghc b # liftA2 :: (a -> b -> c) -> Ghc a -> Ghc b -> Ghc c # (*>) :: Ghc a -> Ghc b -> Ghc b # (<*) :: Ghc a -> Ghc b -> Ghc a #
Functor Ghc |
Instance details Defined in GHC.Driver.Monad Methods fmap :: (a -> b) -> Ghc a -> Ghc b # (<$) :: a -> Ghc b -> Ghc a #
Monad Ghc |
Instance details Defined in GHC.Driver.Monad Methods (>>=) :: Ghc a -> (a -> Ghc b) -> Ghc b # (>>) :: Ghc a -> Ghc b -> Ghc b # return :: a -> Ghc a #
MonadCatch Ghc |
Instance details Defined in GHC.Driver.Monad Methods catch :: (HasCallStack, Exception e) => Ghc a -> (e -> Ghc a) -> Ghc a #
MonadMask Ghc |
Instance details Defined in GHC.Driver.Monad Methods mask :: HasCallStack => ((forall a. Ghc a -> Ghc a) -> Ghc b) -> Ghc b # uninterruptibleMask :: HasCallStack => ((forall a. Ghc a -> Ghc a) -> Ghc b) -> Ghc b # generalBracket :: HasCallStack => Ghc a -> (a -> ExitCase b -> Ghc c) -> (a -> Ghc b) -> Ghc (b, c) #
MonadThrow Ghc |
Instance details Defined in GHC.Driver.Monad Methods throwM :: (HasCallStack, Exception e) => e -> Ghc a #
HasDynFlags Ghc |
Instance details Defined in GHC.Driver.Monad Methods getDynFlags :: Ghc DynFlags #
GhcMonad Ghc |
Instance details Defined in GHC.Driver.Monad Methods getSession :: Ghc HscEnv # setSession :: HscEnv -> Ghc () #
HasLogger Ghc |
Instance details Defined in GHC.Driver.Monad Methods getLogger :: Ghc Logger #

runHsc :: HscEnv -> Hsc a -> IO a #

compileFile :: HscEnv -> StopPhase -> (FilePath, Maybe Phase) -> IO (Maybe FilePath) #

data Phase #

Untyped Phase description

Constructors

Unlit HscSource |
Cpp HscSource |
HsPp HscSource |
Hsc HscSource |
Ccxx |
Cc |
Cobjc |
Cobjcxx |
HCc |
As Bool |
LlvmOpt |
LlvmLlc |
LlvmMangle |
CmmCpp |
Cmm |
MergeForeign |
Js |
StopLn |

#### Instances

Instances details

Show Phase |
Instance details Defined in GHC.Driver.Phases Methods showsPrec :: Int -> Phase -> ShowS # show :: Phase -> String # showList :: [Phase] -> ShowS #
Outputable Phase |
Instance details Defined in GHC.Driver.Phases Methods ppr :: Phase -> SDoc #
Eq Phase |
Instance details Defined in GHC.Driver.Phases Methods (==) :: Phase -> Phase -> Bool # (/=) :: Phase -> Phase -> Bool #

hscDesugar :: HscEnv -> ModSummary -> TcGblEnv -> IO ModGuts #

Convert a typechecked module to Core

hscGenHardCode #

Arguments

:: HscEnv |
-> CgGuts |
-> ModLocation |
-> FilePath |
-> IO (FilePath, Maybe FilePath, [(ForeignSrcLang, FilePath)], Maybe StgCgInfos, Maybe CmmCgInfos) | `Just f` = _stub.c is f

Compile to hard-code.

hscInteractive :: HscEnv -> CgInteractiveGuts -> ModLocation -> IO (Maybe FilePath, CompiledByteCode, [SptEntry]) #

hscSimplify :: HscEnv -> [String] -> ModGuts -> IO ModGuts #

Run Core2Core simplifier. The list of String is a list of (Core) plugin module names added via TH (cf `addCorePlugin`).

hscTypecheckRename :: HscEnv -> ModSummary -> HsParsedModule -> IO (TcGblEnv, RenamedStuff) #

Rename and typecheck a module, additionally returning the renamed syntax

hscUpdateHPT :: (HomePackageTable -> HomePackageTable) -> HscEnv -> HscEnv #

makeSimpleDetails :: HscEnv -> TcGblEnv -> IO ModDetails #

# Typecheck utils

tcSplitForAllTyVars :: Type -> ([TyVar], Type) #

Like `tcSplitPiTys`, but splits off only named binders, returning just the tyvars.

tcSplitForAllTyVarBinder_maybe :: Type -> Maybe (TyVarBinder, Type) #

typecheckIface :: ModIface -> IfG ModDetails #

mkIfaceTc :: HscEnv -> SafeHaskellMode -> ModDetails -> ModSummary -> Maybe CoreProgram -> TcGblEnv -> IO ModIface #

mkBootModDetailsTc :: HscEnv -> TcGblEnv -> IO ModDetails #

initTidyOpts :: HscEnv -> IO TidyOpts #

driverNoStop :: StopPhase #

tidyProgram :: TidyOpts -> ModGuts -> IO (CgGuts, ModDetails) #

data ImportedModsVal #

Constructors

ImportedModsVal |

Fields

- imv_name :: ModuleName

  The name the module is imported with

- imv_span :: SrcSpan

  the source span of the whole import

- imv_is_safe :: IsSafeImport

  whether this is a safe import

- imv_is_hiding :: Bool

  whether this is an "hiding" import

- imv_all_exports :: !GlobalRdrEnv

  all the things the module could provide.

  NB. BangPattern here: otherwise this leaks. (#15111)

- imv_qualified :: Bool

  whether this is a qualified import

importedByUser :: [ImportedBy] -> [ImportedModsVal] #

type TypecheckedSource = LHsBinds GhcTc #

# Source Locations

class HasSrcSpan a #

Minimal complete definition

getLoc

#### Instances

Instances details

HasSrcSpan SrcSpan # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: SrcSpan -> SrcSpan #
HasSrcSpan (SrcSpanAnn' ann) # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: SrcSpanAnn' ann -> SrcSpan #
HasSrcSpan (GenLocated (SrcSpanAnn' ann) a) # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: GenLocated (SrcSpanAnn' ann) a -> SrcSpan #
HasSrcSpan (GenLocated SrcSpan a) # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: GenLocated SrcSpan a -> SrcSpan #

type Located = GenLocated SrcSpan #

unLoc :: GenLocated l e -> e #

getLoc :: HasSrcSpan a => a -> SrcSpan #

getLocA :: GenLocated (SrcSpanAnn' a) e -> SrcSpan #

locA :: SrcSpanAnn' a -> SrcSpan #

noLocA :: a -> LocatedAn an a #

unLocA :: forall (pass :: Pass) a. XRec (GhcPass pass) a -> a #

type LocatedAn a = LocatedAn a #

type LocatedA = GenLocated SrcSpanAnnA #

data AnnListItem #

Annotation for items appearing in a list. They can have one or more trailing punctuations items, such as commas or semicolons.

Constructors

AnnListItem |

Fields

- lann_trailing :: [TrailingAnn]

#### Instances

Instances details

Data AnnListItem |

Instance details

Defined in GHC.Parser.Annotation

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AnnListItem -> c AnnListItem #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AnnListItem #

toConstr :: AnnListItem -> Constr #

dataTypeOf :: AnnListItem -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AnnListItem) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnListItem) #

gmapT :: (forall b. Data b => b -> b) -> AnnListItem -> AnnListItem #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AnnListItem -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AnnListItem -> r #

gmapQ :: (forall d. Data d => d -> u) -> AnnListItem -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> AnnListItem -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem #

Monoid AnnListItem |
Instance details Defined in GHC.Parser.Annotation Methods mempty :: AnnListItem # mappend :: AnnListItem -> AnnListItem -> AnnListItem # mconcat :: [AnnListItem] -> AnnListItem #
Semigroup AnnListItem |
Instance details Defined in GHC.Parser.Annotation Methods (<>) :: AnnListItem -> AnnListItem -> AnnListItem # sconcat :: NonEmpty AnnListItem -> AnnListItem # stimes :: Integral b => b -> AnnListItem -> AnnListItem #
Outputable AnnListItem |
Instance details Defined in GHC.Parser.Annotation Methods ppr :: AnnListItem -> SDoc #
Eq AnnListItem |
Instance details Defined in GHC.Parser.Annotation Methods (==) :: AnnListItem -> AnnListItem -> Bool # (/=) :: AnnListItem -> AnnListItem -> Bool #
HasLoc (LocatedA a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: LocatedA a -> SrcSpan
HiePass p => HasType (LocatedA (HsBind (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (HsBind (GhcPass p)) -> HieM [HieAST Type]
HiePass p => HasType (LocatedA (HsExpr (GhcPass p))) | This instance tries to construct `HieAST` nodes which include the type of the expression. It is not yet possible to do this efficiently for all expression forms, so we skip filling in the type for those inputs. See Note [Computing the type of every node in the tree]
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (HsExpr (GhcPass p)) -> HieM [HieAST Type]
HiePass p => HasType (LocatedA (Pat (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (Pat (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (BindContext (LocatedA (HsBind (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: BindContext (LocatedA (HsBind (GhcPass p))) -> HieM [HieAST Type]
ToHie (Context (Located a)) => ToHie (Context (LocatedA a)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (LocatedA a) -> HieM [HieAST Type]
ToHie (EvBindContext (LocatedA TcEvBinds)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: EvBindContext (LocatedA TcEvBinds) -> HieM [HieAST Type]
ToHie (IEContext (LocatedA (IE GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA (IE GhcRn)) -> HieM [HieAST Type]
ToHie (IEContext (LocatedA (IEWrappedName GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA (IEWrappedName GhcRn)) -> HieM [HieAST Type]
ToHie (IEContext (LocatedA ModuleName)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA ModuleName) -> HieM [HieAST Type]
HiePass p => ToHie (PScoped (LocatedA (Pat (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: PScoped (LocatedA (Pat (GhcPass p))) -> HieM [HieAST Type]
(ToHie (RFContext label), ToHie arg, HasLoc arg, Data arg, Data label) => ToHie (RContext (LocatedA (HsFieldBind label arg))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RContext (LocatedA (HsFieldBind label arg)) -> HieM [HieAST Type]
HiePass p => ToHie (RScoped (LocatedA (IPBind (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedA (IPBind (GhcPass p))) -> HieM [HieAST Type]
(ToHie (LocatedA (body (GhcPass p))), AnnoBody p body, HiePass p) => ToHie (RScoped (LocatedA (Stmt (GhcPass p) (LocatedA (body (GhcPass p)))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedA (Stmt (GhcPass p) (LocatedA (body (GhcPass p))))) -> HieM [HieAST Type]
HiePass p => ToHie (SigContext (LocatedA (Sig (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: SigContext (LocatedA (Sig (GhcPass p))) -> HieM [HieAST Type]
ToHie (TScoped (LocatedA (HsSigType GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (LocatedA (HsSigType GhcRn)) -> HieM [HieAST Type]
ToHie (TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
Data flag => ToHie (TVScoped (LocatedA (HsTyVarBndr flag GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TVScoped (LocatedA (HsTyVarBndr flag GhcRn)) -> HieM [HieAST Type]
ToHie (LocatedA HsWrapper) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA HsWrapper -> HieM [HieAST Type]
ToHie (LocatedA (FixitySig GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FixitySig GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (AnnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (AnnDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ClsInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ClsInstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ConDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ConDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DataFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DataFamInstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DefaultDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DefaultDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DerivDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DerivDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DocDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DocDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (FamilyDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FamilyDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ForeignDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ForeignDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (FunDep GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FunDep GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (InstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (InstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (RoleAnnotDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RoleAnnotDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (RuleDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (RuleDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecls GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (SpliceDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (SpliceDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (StandaloneKindSig GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (StandaloneKindSig GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (TyClDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyClDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (TyFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyFamInstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (WarnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (WarnDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecls GhcRn) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsCmd (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsCmd (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsExpr (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsExpr (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsUntypedSplice (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsUntypedSplice (GhcPass p)) -> HieM [HieAST Type]
(HiePass p, Data (body (GhcPass p)), AnnoBody p body, ToHie (LocatedA (body (GhcPass p)))) => ToHie (LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p)))) -> HieM [HieAST Type]
ToHie (LocatedA (ImportDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ImportDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ConDeclField GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ConDeclField GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (HsType GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsType GhcRn) -> HieM [HieAST Type]
ToHie (LocatedC [LocatedA (HsType GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedC [LocatedA (HsType GhcRn)] -> HieM [HieAST Type]
ToHie (LocatedL [LocatedA (ConDeclField GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedL [LocatedA (ConDeclField GhcRn)] -> HieM [HieAST Type]
HasHaddock (LocatedA (ConDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (ConDecl GhcPs) -> HdkA (LocatedA (ConDecl GhcPs))
HasHaddock (LocatedA (HsDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsDecl GhcPs) -> HdkA (LocatedA (HsDecl GhcPs))
HasHaddock (LocatedA (IE GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (IE GhcPs) -> HdkA (LocatedA (IE GhcPs))
HasHaddock (LocatedA (HsSigType GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsSigType GhcPs) -> HdkA (LocatedA (HsSigType GhcPs))
HasHaddock (LocatedA (HsType GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsType GhcPs) -> HdkA (LocatedA (HsType GhcPs))
HasHaddock (LocatedL [LocatedA (IE GhcPs)]) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedL [LocatedA (IE GhcPs)] -> HdkA (LocatedL [LocatedA (IE GhcPs)])
(ToHie (LocatedA (body (GhcPass p))), HiePass p, AnnoBody p body) => ToHie (LocatedAn NoEpAnns (GRHS (GhcPass p) (LocatedA (body (GhcPass p))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) -> HieM [HieAST Type]
(ToHie (LocatedA (body (GhcPass p))), HiePass p, AnnoBody p body) => ToHie (GRHSs (GhcPass p) (LocatedA (body (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: GRHSs (GhcPass p) (LocatedA (body (GhcPass p))) -> HieM [HieAST Type]
(HiePass p, AnnoBody p body, ToHie (LocatedA (body (GhcPass p)))) => ToHie (MatchGroup (GhcPass p) (LocatedA (body (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: MatchGroup (GhcPass p) (LocatedA (body (GhcPass p))) -> HieM [HieAST Type]
type Anno (LocatedA (IE (GhcPass p))) |
Instance details Defined in GHC.Hs.ImpExp type Anno (LocatedA (IE (GhcPass p))) = SrcSpanAnnA
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno [LocatedA (IE (GhcPass p))] |
Instance details Defined in GHC.Hs.ImpExp type Anno [LocatedA (IE (GhcPass p))] = SrcSpanAnnL
type Anno [LocatedA (ConDeclField (GhcPass _1))] |
Instance details Defined in GHC.Hs.Decls type Anno [LocatedA (ConDeclField (GhcPass _1))] = SrcSpanAnnL
type Anno [LocatedA (HsType (GhcPass p))] |
Instance details Defined in GHC.Hs.Type type Anno [LocatedA (HsType (GhcPass p))] = SrcSpanAnnC
type Anno (FamEqn p (LocatedA (HsType p))) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn p (LocatedA (HsType p))) = SrcSpanAnnA
type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) = SrcAnn NoEpAnns
type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcSpanAnnA
type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcSpanAnnA
type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA
type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) = SrcSpanAnnA
type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA
type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) = SrcSpanAnnA

data NameAnn #

exact print annotations for a `RdrName`. There are many kinds of adornment that can be attached to a given `RdrName`. This type captures them, as detailed on the individual constructors.

Constructors

NameAnn | Used for a name with an adornment, so ``foo``, `(bar)`

Fields

- nann_adornment :: NameAdornment
- nann_open :: EpaLocation
- nann_name :: EpaLocation
- nann_close :: EpaLocation
- nann_trailing :: [TrailingAnn]

NameAnnCommas | Used for `(,,,)`, or @()#

Fields

- nann_adornment :: NameAdornment
- nann_open :: EpaLocation
- nann_commas :: [EpaLocation]
- nann_close :: EpaLocation
- nann_trailing :: [TrailingAnn]

NameAnnBars | Used for `(# | | #)`

Fields

- nann_adornment :: NameAdornment
- nann_open :: EpaLocation
- nann_bars :: [EpaLocation]
- nann_close :: EpaLocation
- nann_trailing :: [TrailingAnn]

NameAnnOnly | Used for `()`, `(##)`, `[]`

Fields

- nann_adornment :: NameAdornment
- nann_open :: EpaLocation
- nann_close :: EpaLocation
- nann_trailing :: [TrailingAnn]

NameAnnRArrow | Used for `->`, as an identifier

Fields

- nann_unicode :: Bool
- nann_mopen :: Maybe EpaLocation
- nann_name :: EpaLocation
- nann_mclose :: Maybe EpaLocation
- nann_trailing :: [TrailingAnn]

NameAnnQuote | Used for an item with a leading `'`. The annotation for unquoted item is stored in `nann_quoted`.

Fields

- nann_quote :: EpaLocation
- nann_quoted :: SrcSpanAnnN
- nann_trailing :: [TrailingAnn]

NameAnnTrailing | Used when adding a `TrailingAnn` to an existing `LocatedN` which has no Api Annotation (via the `EpAnnNotUsed` constructor.

Fields

- nann_trailing :: [TrailingAnn]

#### Instances

Instances details

Data NameAnn |

Instance details

Defined in GHC.Parser.Annotation

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NameAnn -> c NameAnn #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NameAnn #

toConstr :: NameAnn -> Constr #

dataTypeOf :: NameAnn -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NameAnn) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameAnn) #

gmapT :: (forall b. Data b => b -> b) -> NameAnn -> NameAnn #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NameAnn -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NameAnn -> r #

gmapQ :: (forall d. Data d => d -> u) -> NameAnn -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> NameAnn -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> NameAnn -> m NameAnn #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NameAnn -> m NameAnn #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NameAnn -> m NameAnn #

Monoid NameAnn |
Instance details Defined in GHC.Parser.Annotation Methods mempty :: NameAnn # mappend :: NameAnn -> NameAnn -> NameAnn # mconcat :: [NameAnn] -> NameAnn #
Semigroup NameAnn |
Instance details Defined in GHC.Parser.Annotation Methods (<>) :: NameAnn -> NameAnn -> NameAnn # sconcat :: NonEmpty NameAnn -> NameAnn # stimes :: Integral b => b -> NameAnn -> NameAnn #
Outputable NameAnn |
Instance details Defined in GHC.Parser.Annotation Methods ppr :: NameAnn -> SDoc #
Eq NameAnn |
Instance details Defined in GHC.Parser.Annotation Methods (==) :: NameAnn -> NameAnn -> Bool # (/=) :: NameAnn -> NameAnn -> Bool #
HasLoc (LocatedN a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: LocatedN a -> SrcSpan
ToHie (LBooleanFormula (LocatedN Name)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LBooleanFormula (LocatedN Name) -> HieM [HieAST Type]
ToHie (Context (Located a)) => ToHie (Context (LocatedN a)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (LocatedN a) -> HieM [HieAST Type]
type Anno (LocatedN Name) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Name) = SrcSpan
type Anno (LocatedN RdrName) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN RdrName) = SrcSpan
type Anno (LocatedN Id) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Id) = SrcSpan
type Anno [LocatedN Name] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Name] = SrcSpan
type Anno [LocatedN RdrName] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN RdrName] = SrcSpan
type Anno [LocatedN Id] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Id] = SrcSpan

type RealLocated = GenLocated RealSrcSpan #

data GenLocated l e #

We attach SrcSpans to lots of things, so let's have a datatype for it.

Constructors

L l e |

#### Instances

Instances details

Bifunctor GenLocated # |
Instance details Defined in Development.IDE.GHC.Orphans Methods bimap :: (a -> b) -> (c -> d) -> GenLocated a c -> GenLocated b d # first :: (a -> b) -> GenLocated a c -> GenLocated b c # second :: (b -> c) -> GenLocated a b -> GenLocated a c #
Foldable (GenLocated l) |

Instance details

Defined in GHC.Types.SrcLoc

Methods

fold :: Monoid m => GenLocated l m -> m #

foldMap :: Monoid m => (a -> m) -> GenLocated l a -> m #

foldMap' :: Monoid m => (a -> m) -> GenLocated l a -> m #

foldr :: (a -> b -> b) -> b -> GenLocated l a -> b #

foldr' :: (a -> b -> b) -> b -> GenLocated l a -> b #

foldl :: (b -> a -> b) -> b -> GenLocated l a -> b #

foldl' :: (b -> a -> b) -> b -> GenLocated l a -> b #

foldr1 :: (a -> a -> a) -> GenLocated l a -> a #

foldl1 :: (a -> a -> a) -> GenLocated l a -> a #

toList :: GenLocated l a -> [a] #

null :: GenLocated l a -> Bool #

length :: GenLocated l a -> Int #

elem :: Eq a => a -> GenLocated l a -> Bool #

maximum :: Ord a => GenLocated l a -> a #

minimum :: Ord a => GenLocated l a -> a #

sum :: Num a => GenLocated l a -> a #

product :: Num a => GenLocated l a -> a #

Traversable (GenLocated l) |
Instance details Defined in GHC.Types.SrcLoc Methods traverse :: Applicative f => (a -> f b) -> GenLocated l a -> f (GenLocated l b) # sequenceA :: Applicative f => GenLocated l (f a) -> f (GenLocated l a) # mapM :: Monad m => (a -> m b) -> GenLocated l a -> m (GenLocated l b) # sequence :: Monad m => GenLocated l (m a) -> m (GenLocated l a) #
Functor (GenLocated l) |
Instance details Defined in GHC.Types.SrcLoc Methods fmap :: (a -> b) -> GenLocated l a -> GenLocated l b # (<$) :: a -> GenLocated l b -> GenLocated l a #
HasLoc (LocatedA a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: LocatedA a -> SrcSpan
HasLoc (LocatedN a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: LocatedN a -> SrcSpan
HasLoc (Located a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: Located a -> SrcSpan
HiePass p => HasType (LocatedA (HsBind (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (HsBind (GhcPass p)) -> HieM [HieAST Type]
HiePass p => HasType (LocatedA (HsExpr (GhcPass p))) | This instance tries to construct `HieAST` nodes which include the type of the expression. It is not yet possible to do this efficiently for all expression forms, so we skip filling in the type for those inputs. See Note [Computing the type of every node in the tree]
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (HsExpr (GhcPass p)) -> HieM [HieAST Type]
HiePass p => HasType (LocatedA (Pat (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (Pat (GhcPass p)) -> HieM [HieAST Type]
ToHie (LBooleanFormula (LocatedN Name)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LBooleanFormula (LocatedN Name) -> HieM [HieAST Type]
ToHie (LHsDoc GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LHsDoc GhcRn -> HieM [HieAST Type]
HiePass p => ToHie (BindContext (LocatedA (HsBind (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: BindContext (LocatedA (HsBind (GhcPass p))) -> HieM [HieAST Type]
ToHie (Context (Located a)) => ToHie (Context (LocatedA a)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (LocatedA a) -> HieM [HieAST Type]
ToHie (Context (Located a)) => ToHie (Context (LocatedN a)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (LocatedN a) -> HieM [HieAST Type]
ToHie (Context (Located Name)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (Located Name) -> HieM [HieAST Type]
ToHie (Context (Located Var)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (Located Var) -> HieM [HieAST Type]
ToHie (Context (Located NoExtField)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (Located NoExtField) -> HieM [HieAST Type]
ToHie (EvBindContext (LocatedA TcEvBinds)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: EvBindContext (LocatedA TcEvBinds) -> HieM [HieAST Type]
ToHie (IEContext (LocatedA (IE GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA (IE GhcRn)) -> HieM [HieAST Type]
ToHie (IEContext (LocatedA (IEWrappedName GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA (IEWrappedName GhcRn)) -> HieM [HieAST Type]
ToHie (IEContext (LocatedA ModuleName)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA ModuleName) -> HieM [HieAST Type]
ToHie (IEContext (Located RecFieldInfo)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (Located RecFieldInfo) -> HieM [HieAST Type]
HiePass p => ToHie (PScoped (LocatedA (Pat (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: PScoped (LocatedA (Pat (GhcPass p))) -> HieM [HieAST Type]
(ToHie (RFContext label), ToHie arg, HasLoc arg, Data arg, Data label) => ToHie (RContext (LocatedA (HsFieldBind label arg))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RContext (LocatedA (HsFieldBind label arg)) -> HieM [HieAST Type]
HiePass p => ToHie (RFContext (LocatedAn NoEpAnns (AmbiguousFieldOcc (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RFContext (LocatedAn NoEpAnns (AmbiguousFieldOcc (GhcPass p))) -> HieM [HieAST Type]
HiePass p => ToHie (RFContext (LocatedAn NoEpAnns (FieldOcc (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RFContext (LocatedAn NoEpAnns (FieldOcc (GhcPass p))) -> HieM [HieAST Type]
HiePass p => ToHie (RScoped (LocatedA (IPBind (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedA (IPBind (GhcPass p))) -> HieM [HieAST Type]
(ToHie (LocatedA (body (GhcPass p))), AnnoBody p body, HiePass p) => ToHie (RScoped (LocatedA (Stmt (GhcPass p) (LocatedA (body (GhcPass p)))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedA (Stmt (GhcPass p) (LocatedA (body (GhcPass p))))) -> HieM [HieAST Type]
ToHie (RScoped (LocatedAn NoEpAnns (DerivStrategy GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (DerivStrategy GhcRn)) -> HieM [HieAST Type]
ToHie (RScoped (LocatedAn NoEpAnns (FamilyResultSig GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (FamilyResultSig GhcRn)) -> HieM [HieAST Type]
ToHie (RScoped (LocatedAn NoEpAnns (RuleBndr GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (RuleBndr GhcRn)) -> HieM [HieAST Type]
HiePass p => ToHie (SigContext (LocatedA (Sig (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: SigContext (LocatedA (Sig (GhcPass p))) -> HieM [HieAST Type]
ToHie (TScoped (LocatedA (HsSigType GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (LocatedA (HsSigType GhcRn)) -> HieM [HieAST Type]
ToHie (TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
Data flag => ToHie (TVScoped (LocatedA (HsTyVarBndr flag GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TVScoped (LocatedA (HsTyVarBndr flag GhcRn)) -> HieM [HieAST Type]
ToHie (LocatedA HsWrapper) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA HsWrapper -> HieM [HieAST Type]
ToHie (LocatedA (FixitySig GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FixitySig GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (AnnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (AnnDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ClsInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ClsInstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ConDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ConDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DataFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DataFamInstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DefaultDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DefaultDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DerivDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DerivDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DocDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DocDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (FamilyDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FamilyDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ForeignDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ForeignDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (FunDep GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FunDep GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (InstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (InstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (RoleAnnotDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RoleAnnotDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (RuleDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (RuleDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecls GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (SpliceDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (SpliceDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (StandaloneKindSig GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (StandaloneKindSig GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (TyClDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyClDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (TyFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyFamInstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (WarnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (WarnDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecls GhcRn) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsCmd (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsCmd (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsExpr (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsExpr (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsUntypedSplice (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsUntypedSplice (GhcPass p)) -> HieM [HieAST Type]
(HiePass p, Data (body (GhcPass p)), AnnoBody p body, ToHie (LocatedA (body (GhcPass p)))) => ToHie (LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p)))) -> HieM [HieAST Type]
ToHie (LocatedA (ImportDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ImportDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ConDeclField GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ConDeclField GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (HsType GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsType GhcRn) -> HieM [HieAST Type]
ToHie (LocatedC (DerivClauseTys GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedC (DerivClauseTys GhcRn) -> HieM [HieAST Type]
ToHie (LocatedC [LocatedA (HsType GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedC [LocatedA (HsType GhcRn)] -> HieM [HieAST Type]
ToHie (LocatedL [LocatedA (ConDeclField GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedL [LocatedA (ConDeclField GhcRn)] -> HieM [HieAST Type]
ToHie (LocatedP OverlapMode) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedP OverlapMode -> HieM [HieAST Type]
HiePass p => ToHie (Located (PatSynBind (GhcPass p) (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Located (PatSynBind (GhcPass p) (GhcPass p)) -> HieM [HieAST Type]
ToHie (Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)] -> HieM [HieAST Type]
HasHaddock (LocatedA (ConDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (ConDecl GhcPs) -> HdkA (LocatedA (ConDecl GhcPs))
HasHaddock (LocatedA (HsDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsDecl GhcPs) -> HdkA (LocatedA (HsDecl GhcPs))
HasHaddock (LocatedA (IE GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (IE GhcPs) -> HdkA (LocatedA (IE GhcPs))
HasHaddock (LocatedA (HsSigType GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsSigType GhcPs) -> HdkA (LocatedA (HsSigType GhcPs))
HasHaddock (LocatedA (HsType GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsType GhcPs) -> HdkA (LocatedA (HsType GhcPs))
HasHaddock (LocatedC (DerivClauseTys GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedC (DerivClauseTys GhcPs) -> HdkA (LocatedC (DerivClauseTys GhcPs))
HasHaddock (LocatedL [LocatedA (IE GhcPs)]) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedL [LocatedA (IE GhcPs)] -> HdkA (LocatedL [LocatedA (IE GhcPs)])
HasHaddock (Located (HsModule GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located (HsModule GhcPs) -> HdkA (Located (HsModule GhcPs))
HasHaddock (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)]) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)] -> HdkA (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)])
NamedThing e => NamedThing (Located e) |
Instance details Defined in GHC.Types.Name Methods getOccName :: Located e -> OccName # getName :: Located e -> Name #
Outputable e => Outputable (Located e) |
Instance details Defined in GHC.Types.SrcLoc Methods ppr :: Located e -> SDoc #
(Data l, Data e) => Data (GenLocated l e) |

Instance details

Defined in GHC.Types.SrcLoc

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GenLocated l e -> c (GenLocated l e) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (GenLocated l e) #

toConstr :: GenLocated l e -> Constr #

dataTypeOf :: GenLocated l e -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (GenLocated l e)) #

dataCast2 :: Typeable t => (forall d e0. (Data d, Data e0) => c (t d e0)) -> Maybe (c (GenLocated l e)) #

gmapT :: (forall b. Data b => b -> b) -> GenLocated l e -> GenLocated l e #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GenLocated l e -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GenLocated l e -> r #

gmapQ :: (forall d. Data d => d -> u) -> GenLocated l e -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> GenLocated l e -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> GenLocated l e -> m (GenLocated l e) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GenLocated l e -> m (GenLocated l e) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GenLocated l e -> m (GenLocated l e) #

(Show l, Show e) => Show (GenLocated l e) |
Instance details Defined in GHC.Types.SrcLoc Methods showsPrec :: Int -> GenLocated l e -> ShowS # show :: GenLocated l e -> String # showList :: [GenLocated l e] -> ShowS #
(NFData l, NFData e) => NFData (GenLocated l e) |
Instance details Defined in GHC.Types.SrcLoc Methods rnf :: GenLocated l e -> () #
ToHie (LocatedAn NoEpAnns (HsDerivingClause GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (HsDerivingClause GhcRn) -> HieM [HieAST Type]
ToHie (LocatedAn NoEpAnns (InjectivityAnn GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (InjectivityAnn GhcRn) -> HieM [HieAST Type]
(ToHie (LocatedA (body (GhcPass p))), HiePass p, AnnoBody p body) => ToHie (LocatedAn NoEpAnns (GRHS (GhcPass p) (LocatedA (body (GhcPass p))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedAn NoEpAnns (HsCmdTop (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (HsCmdTop (GhcPass p)) -> HieM [HieAST Type]
ToHie (LocatedAn NoEpAnns HsIPName) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns HsIPName -> HieM [HieAST Type]
(ToHie (LocatedA (body (GhcPass p))), HiePass p, AnnoBody p body) => ToHie (GRHSs (GhcPass p) (LocatedA (body (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: GRHSs (GhcPass p) (LocatedA (body (GhcPass p))) -> HieM [HieAST Type]
(HiePass p, AnnoBody p body, ToHie (LocatedA (body (GhcPass p)))) => ToHie (MatchGroup (GhcPass p) (LocatedA (body (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: MatchGroup (GhcPass p) (LocatedA (body (GhcPass p))) -> HieM [HieAST Type]
HasHaddock (LocatedAn NoEpAnns (HsDerivingClause GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedAn NoEpAnns (HsDerivingClause GhcPs) -> HdkA (LocatedAn NoEpAnns (HsDerivingClause GhcPs))
NamedThing (Located a) => NamedThing (LocatedAn an a) |
Instance details Defined in GHC.Parser.Annotation Methods getOccName :: LocatedAn an a -> OccName # getName :: LocatedAn an a -> Name #
Outputable (GenLocated Anchor EpaComment) |
Instance details Defined in GHC.Parser.Annotation Methods ppr :: GenLocated Anchor EpaComment -> SDoc #
(Outputable a, Outputable e) => Outputable (GenLocated (SrcSpanAnn' a) e) |
Instance details Defined in GHC.Parser.Annotation Methods ppr :: GenLocated (SrcSpanAnn' a) e -> SDoc #
Outputable a => Outputable (GenLocated TokenLocation a) |
Instance details Defined in GHC.Parser.Annotation Methods ppr :: GenLocated TokenLocation a -> SDoc #
Outputable e => Outputable (GenLocated RealSrcSpan e) |
Instance details Defined in GHC.Types.SrcLoc Methods ppr :: GenLocated RealSrcSpan e -> SDoc #
(Outputable a, OutputableBndr e) => OutputableBndr (GenLocated (SrcSpanAnn' a) e) |
Instance details Defined in GHC.Parser.Annotation Methods pprBndr :: BindingSite -> GenLocated (SrcSpanAnn' a) e -> SDoc # pprPrefixOcc :: GenLocated (SrcSpanAnn' a) e -> SDoc # pprInfixOcc :: GenLocated (SrcSpanAnn' a) e -> SDoc # bndrIsJoin_maybe :: GenLocated (SrcSpanAnn' a) e -> Maybe Int #
(Eq l, Eq e) => Eq (GenLocated l e) |
Instance details Defined in GHC.Types.SrcLoc Methods (==) :: GenLocated l e -> GenLocated l e -> Bool # (/=) :: GenLocated l e -> GenLocated l e -> Bool #
(Ord l, Ord e) => Ord (GenLocated l e) |

Instance details

Defined in GHC.Types.SrcLoc

Methods

compare :: GenLocated l e -> GenLocated l e -> Ordering #

(<) :: GenLocated l e -> GenLocated l e -> Bool #

(<=) :: GenLocated l e -> GenLocated l e -> Bool #

(>) :: GenLocated l e -> GenLocated l e -> Bool #

(>=) :: GenLocated l e -> GenLocated l e -> Bool #

max :: GenLocated l e -> GenLocated l e -> GenLocated l e #

min :: GenLocated l e -> GenLocated l e -> GenLocated l e #

HasSrcSpan (GenLocated (SrcSpanAnn' ann) a) # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: GenLocated (SrcSpanAnn' ann) a -> SrcSpan #
HasSrcSpan (GenLocated SrcSpan a) # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: GenLocated SrcSpan a -> SrcSpan #
type Anno (LocatedA (IE (GhcPass p))) |
Instance details Defined in GHC.Hs.ImpExp type Anno (LocatedA (IE (GhcPass p))) = SrcSpanAnnA
type Anno (LocatedN Name) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Name) = SrcSpan
type Anno (LocatedN RdrName) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN RdrName) = SrcSpan
type Anno (LocatedN Id) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Id) = SrcSpan
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno [LocatedA (IE (GhcPass p))] |
Instance details Defined in GHC.Hs.ImpExp type Anno [LocatedA (IE (GhcPass p))] = SrcSpanAnnL
type Anno [LocatedA (ConDeclField (GhcPass _1))] |
Instance details Defined in GHC.Hs.Decls type Anno [LocatedA (ConDeclField (GhcPass _1))] = SrcSpanAnnL
type Anno [LocatedA (HsType (GhcPass p))] |
Instance details Defined in GHC.Hs.Type type Anno [LocatedA (HsType (GhcPass p))] = SrcSpanAnnC
type Anno [LocatedN Name] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Name] = SrcSpan
type Anno [LocatedN RdrName] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN RdrName] = SrcSpan
type Anno [LocatedN Id] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Id] = SrcSpan
type Anno (FamEqn p (LocatedA (HsType p))) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn p (LocatedA (HsType p))) = SrcSpanAnnA
type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) = SrcAnn NoEpAnns
type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcSpanAnnA
type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcSpanAnnA
type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA
type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) = SrcSpanAnnA
type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA
type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) = SrcSpanAnnA

data SrcSpan #

Source Span

A `SrcSpan` identifies either a specific portion of a text file or a human-readable description of a location.

Constructors

UnhelpfulSpan !UnhelpfulSpanReason |

#### Instances

Instances details

Data SrcSpan |

Instance details

Defined in GHC.Types.SrcLoc

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SrcSpan -> c SrcSpan #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SrcSpan #

toConstr :: SrcSpan -> Constr #

dataTypeOf :: SrcSpan -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SrcSpan) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SrcSpan) #

gmapT :: (forall b. Data b => b -> b) -> SrcSpan -> SrcSpan #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SrcSpan -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SrcSpan -> r #

gmapQ :: (forall d. Data d => d -> u) -> SrcSpan -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SrcSpan -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SrcSpan -> m SrcSpan #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcSpan -> m SrcSpan #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcSpan -> m SrcSpan #

Show SrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods showsPrec :: Int -> SrcSpan -> ShowS # show :: SrcSpan -> String # showList :: [SrcSpan] -> ShowS #
NFData SrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods rnf :: SrcSpan -> () #
ToJson SrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods json :: SrcSpan -> JsonDoc #
Outputable SrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods ppr :: SrcSpan -> SDoc #
Eq SrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods (==) :: SrcSpan -> SrcSpan -> Bool # (/=) :: SrcSpan -> SrcSpan -> Bool #
Ord SrcSpan # |
Instance details Defined in Development.IDE.GHC.Orphans Methods compare :: SrcSpan -> SrcSpan -> Ordering # (<) :: SrcSpan -> SrcSpan -> Bool # (<=) :: SrcSpan -> SrcSpan -> Bool # (>) :: SrcSpan -> SrcSpan -> Bool # (>=) :: SrcSpan -> SrcSpan -> Bool # max :: SrcSpan -> SrcSpan -> SrcSpan # min :: SrcSpan -> SrcSpan -> SrcSpan #
HasSrcSpan SrcSpan # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: SrcSpan -> SrcSpan #
HasLoc (Located a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: Located a -> SrcSpan
ToHie (LHsDoc GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LHsDoc GhcRn -> HieM [HieAST Type]
ToHie (Context (Located Name)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (Located Name) -> HieM [HieAST Type]
ToHie (Context (Located Var)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (Located Var) -> HieM [HieAST Type]
ToHie (Context (Located NoExtField)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (Located NoExtField) -> HieM [HieAST Type]
ToHie (IEContext (Located RecFieldInfo)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (Located RecFieldInfo) -> HieM [HieAST Type]
HiePass p => ToHie (Located (PatSynBind (GhcPass p) (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Located (PatSynBind (GhcPass p) (GhcPass p)) -> HieM [HieAST Type]
ToHie (Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)] -> HieM [HieAST Type]
HasHaddock (Located (HsModule GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located (HsModule GhcPs) -> HdkA (Located (HsModule GhcPs))
HasHaddock (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)]) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)] -> HdkA (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)])
NamedThing e => NamedThing (Located e) |
Instance details Defined in GHC.Types.Name Methods getOccName :: Located e -> OccName # getName :: Located e -> Name #
Outputable e => Outputable (Located e) |
Instance details Defined in GHC.Types.SrcLoc Methods ppr :: Located e -> SDoc #
HasSrcSpan (GenLocated SrcSpan a) # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: GenLocated SrcSpan a -> SrcSpan #

data RealSrcSpan #

A `RealSrcSpan` delimits a portion of a text file. It could be represented by a pair of (line,column) coordinates, but in fact we optimise slightly by using more compact representations for single-line and zero-length spans, both of which are quite common.

The end position is defined to be the column after the end of the span. That is, a span of (1,1)-(1,2) is one character long, and a span of (1,1)-(1,1) is zero characters long.

Real Source Span

#### Instances

Instances details

FromJSON RealSrcSpan # |
Instance details Defined in Development.IDE.GHC.Orphans Methods parseJSON :: Value -> Parser RealSrcSpan # parseJSONList :: Value -> Parser [RealSrcSpan] # omittedField :: Maybe RealSrcSpan #
ToJSON RealSrcSpan # |
Instance details Defined in Development.IDE.GHC.Orphans Methods toJSON :: RealSrcSpan -> Value # toEncoding :: RealSrcSpan -> Encoding # toJSONList :: [RealSrcSpan] -> Value # toEncodingList :: [RealSrcSpan] -> Encoding # omitField :: RealSrcSpan -> Bool #
Data RealSrcSpan |

Instance details

Defined in GHC.Types.SrcLoc

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RealSrcSpan -> c RealSrcSpan #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RealSrcSpan #

toConstr :: RealSrcSpan -> Constr #

dataTypeOf :: RealSrcSpan -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RealSrcSpan) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RealSrcSpan) #

gmapT :: (forall b. Data b => b -> b) -> RealSrcSpan -> RealSrcSpan #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RealSrcSpan -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RealSrcSpan -> r #

gmapQ :: (forall d. Data d => d -> u) -> RealSrcSpan -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> RealSrcSpan -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> RealSrcSpan -> m RealSrcSpan #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RealSrcSpan -> m RealSrcSpan #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RealSrcSpan -> m RealSrcSpan #

Show RealSrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods showsPrec :: Int -> RealSrcSpan -> ShowS # show :: RealSrcSpan -> String # showList :: [RealSrcSpan] -> ShowS #
NFData RealSrcSpan # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: RealSrcSpan -> () #
ToJson RealSrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods json :: RealSrcSpan -> JsonDoc #
Outputable RealSrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods ppr :: RealSrcSpan -> SDoc #
Eq RealSrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods (==) :: RealSrcSpan -> RealSrcSpan -> Bool # (/=) :: RealSrcSpan -> RealSrcSpan -> Bool #
Ord RealSrcSpan |
Instance details Defined in GHC.Types.SrcLoc Methods compare :: RealSrcSpan -> RealSrcSpan -> Ordering # (<) :: RealSrcSpan -> RealSrcSpan -> Bool # (<=) :: RealSrcSpan -> RealSrcSpan -> Bool # (>) :: RealSrcSpan -> RealSrcSpan -> Bool # (>=) :: RealSrcSpan -> RealSrcSpan -> Bool # max :: RealSrcSpan -> RealSrcSpan -> RealSrcSpan # min :: RealSrcSpan -> RealSrcSpan -> RealSrcSpan #
MapAge RealSrcSpan # |
Instance details Defined in Development.IDE.Core.UseStale Methods mapAgeFrom :: forall (from :: Age) (to :: Age). PositionMap from to -> Tracked to RealSrcSpan -> Maybe (Tracked from RealSrcSpan) # mapAgeTo :: forall (from :: Age) (to :: Age). PositionMap from to -> Tracked from RealSrcSpan -> Maybe (Tracked to RealSrcSpan) #
Outputable e => Outputable (GenLocated RealSrcSpan e) |
Instance details Defined in GHC.Types.SrcLoc Methods ppr :: GenLocated RealSrcSpan e -> SDoc #

pattern RealSrcSpan :: RealSrcSpan -> Maybe BufSpan -> SrcSpan #

data RealSrcLoc #

Real Source Location

Represents a single point within a file

#### Instances

Instances details

Show RealSrcLoc |
Instance details Defined in GHC.Types.SrcLoc Methods showsPrec :: Int -> RealSrcLoc -> ShowS # show :: RealSrcLoc -> String # showList :: [RealSrcLoc] -> ShowS #
Outputable RealSrcLoc |
Instance details Defined in GHC.Types.SrcLoc Methods ppr :: RealSrcLoc -> SDoc #
Eq RealSrcLoc |
Instance details Defined in GHC.Types.SrcLoc Methods (==) :: RealSrcLoc -> RealSrcLoc -> Bool # (/=) :: RealSrcLoc -> RealSrcLoc -> Bool #
Ord RealSrcLoc |
Instance details Defined in GHC.Types.SrcLoc Methods compare :: RealSrcLoc -> RealSrcLoc -> Ordering # (<) :: RealSrcLoc -> RealSrcLoc -> Bool # (<=) :: RealSrcLoc -> RealSrcLoc -> Bool # (>) :: RealSrcLoc -> RealSrcLoc -> Bool # (>=) :: RealSrcLoc -> RealSrcLoc -> Bool # max :: RealSrcLoc -> RealSrcLoc -> RealSrcLoc # min :: RealSrcLoc -> RealSrcLoc -> RealSrcLoc #

pattern RealSrcLoc :: RealSrcLoc -> Maybe BufPos -> SrcLoc #

data SrcLoc #

Source Location

Constructors

UnhelpfulLoc !FastString |

#### Instances

Instances details

Show SrcLoc |
Instance details Defined in GHC.Types.SrcLoc Methods showsPrec :: Int -> SrcLoc -> ShowS # show :: SrcLoc -> String # showList :: [SrcLoc] -> ShowS #
Outputable SrcLoc |
Instance details Defined in GHC.Types.SrcLoc Methods ppr :: SrcLoc -> SDoc #
Eq SrcLoc |
Instance details Defined in GHC.Types.SrcLoc Methods (==) :: SrcLoc -> SrcLoc -> Bool # (/=) :: SrcLoc -> SrcLoc -> Bool #

data BufSpan #

StringBuffer Source Span

#### Instances

Instances details

Data BufSpan |

Instance details

Defined in GHC.Types.SrcLoc

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BufSpan -> c BufSpan #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BufSpan #

toConstr :: BufSpan -> Constr #

dataTypeOf :: BufSpan -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BufSpan) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BufSpan) #

gmapT :: (forall b. Data b => b -> b) -> BufSpan -> BufSpan #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BufSpan -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BufSpan -> r #

gmapQ :: (forall d. Data d => d -> u) -> BufSpan -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> BufSpan -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> BufSpan -> m BufSpan #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BufSpan -> m BufSpan #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BufSpan -> m BufSpan #

Semigroup BufSpan |
Instance details Defined in GHC.Types.SrcLoc Methods (<>) :: BufSpan -> BufSpan -> BufSpan # sconcat :: NonEmpty BufSpan -> BufSpan # stimes :: Integral b => b -> BufSpan -> BufSpan #
Show BufSpan |
Instance details Defined in GHC.Types.SrcLoc Methods showsPrec :: Int -> BufSpan -> ShowS # show :: BufSpan -> String # showList :: [BufSpan] -> ShowS #
Eq BufSpan |
Instance details Defined in GHC.Types.SrcLoc Methods (==) :: BufSpan -> BufSpan -> Bool # (/=) :: BufSpan -> BufSpan -> Bool #
Ord BufSpan |
Instance details Defined in GHC.Types.SrcLoc Methods compare :: BufSpan -> BufSpan -> Ordering # (<) :: BufSpan -> BufSpan -> Bool # (<=) :: BufSpan -> BufSpan -> Bool # (>) :: BufSpan -> BufSpan -> Bool # (>=) :: BufSpan -> BufSpan -> Bool # max :: BufSpan -> BufSpan -> BufSpan # min :: BufSpan -> BufSpan -> BufSpan #

type SrcAnn ann = SrcSpanAnn' (EpAnn ann) #

We mostly use 'SrcSpanAnn'' with an 'EpAnn''

leftmost_smallest :: SrcSpan -> SrcSpan -> Ordering #

Strategies for ordering `SrcSpan`s

containsSpan :: RealSrcSpan -> RealSrcSpan -> Bool #

Tests whether the first span "contains" the other span, meaning that it covers at least as much source code. True where spans are equal.

mkGeneralSrcSpan :: FastString -> SrcSpan #

Create a "bad" `SrcSpan` that has not location information

mkRealSrcSpan :: RealSrcLoc -> RealSrcLoc -> RealSrcSpan #

Create a `SrcSpan` between two points in a file

mkRealSrcLoc :: FastString -> Int -> Int -> RealSrcLoc #

getRealSrcSpan :: RealLocated a -> RealSrcSpan #

realSrcLocSpan :: RealSrcLoc -> RealSrcSpan #

realSrcSpanStart :: RealSrcSpan -> RealSrcLoc #

realSrcSpanEnd :: RealSrcSpan -> RealSrcLoc #

isSubspanOfA :: LocatedAn la a -> LocatedAn lb b -> Bool #

isSubspanOf #

Arguments

:: SrcSpan | The span that may be enclosed by the other
-> SrcSpan | The span it may be enclosed by
-> Bool |

Determines whether a span is enclosed by another one

wiredInSrcSpan :: SrcSpan #

Built-in "bad" `SrcSpan`s for common sources of location uncertainty

mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan #

Create a `SrcSpan` between two points in a file

srcSpanStart :: SrcSpan -> SrcLoc #

Returns the location at the start of the `SrcSpan` or a "bad" `SrcSpan` if that is unavailable

srcSpanStartLine :: RealSrcSpan -> Int #

srcSpanStartCol :: RealSrcSpan -> Int #

srcSpanEnd :: SrcSpan -> SrcLoc #

Returns the location at the end of the `SrcSpan` or a "bad" `SrcSpan` if that is unavailable

srcSpanEndLine :: RealSrcSpan -> Int #

srcSpanEndCol :: RealSrcSpan -> Int #

srcSpanFile :: RealSrcSpan -> FastString #

srcLocCol :: RealSrcLoc -> Int #

Raises an error when used on a "bad" `SrcLoc`

srcLocFile :: RealSrcLoc -> FastString #

Gives the filename of the `RealSrcLoc`

srcLocLine :: RealSrcLoc -> Int #

Raises an error when used on a "bad" `SrcLoc`

noSrcSpan :: SrcSpan #

Built-in "bad" `SrcSpan`s for common sources of location uncertainty

noSrcLoc :: SrcLoc #

Built-in "bad" `SrcLoc` values for particular locations

noLoc :: e -> Located e #

mapLoc :: (a -> b) -> GenLocated l a -> GenLocated l b #

# Finder

data FindResult #

The result of searching for an imported module.

NB: FindResult manages both user source-import lookups (which can result in `Module`) as well as direct imports for interfaces (which always result in `InstalledModule`).

Constructors

Found ModLocation Module | The module was found
NoPackage Unit | The requested unit was not found
FoundMultiple [(Module, ModuleOrigin)] | _Error_: both in multiple packages
NotFound | Not found

Fields

- fr_paths :: [FilePath]

  Places where I looked

- fr_pkg :: Maybe Unit

  Just p => module is in this unit's manifest, but couldn't find the .hi file

- fr_mods_hidden :: [Unit]

  Module is in these units, but the *module* is hidden

- fr_pkgs_hidden :: [Unit]

  Module is in these units, but the *unit* is hidden

- fr_unusables :: [UnusableUnit]

  Module is in these units, but it is unusable

- fr_suggestions :: [ModuleSuggestion]

  Possible mis-spelled modules

mkHomeModLocation :: DynFlags -> ModuleName -> FilePath -> IO ModLocation #

findObjectLinkableMaybe :: Module -> ModLocation -> IO (Maybe Linkable) #

data InstalledFindResult #

Constructors

InstalledFound ModLocation InstalledModule |
InstalledNoPackage UnitId |
InstalledNotFound [FilePath] (Maybe UnitId) |

# Module and Package

data ModuleOrigin #

Given a module name, there may be multiple ways it came into scope, possibly simultaneously. This data type tracks all the possible ways it could have come into scope. Warning: don't use the record functions, they're partial!

Constructors

ModHidden | Module is hidden, and thus never will be available for import. (But maybe the user didn't realize), so we'll still keep track of these modules.)
ModUnusable !UnusableUnit | Module is unavailable because the unit is unusable.
ModOrigin | Module is public, and could have come from some places.

Fields

- fromOrigUnit :: Maybe Bool

  `Just False` means that this module is in someone's `exported-modules` list, but that package is hidden; `Just True` means that it is available; `Nothing` means neither applies.

- fromExposedReexport :: [UnitInfo]

  Is the module available from a reexport of an exposed package? There could be multiple.

- fromHiddenReexport :: [UnitInfo]

  Is the module available from a reexport of a hidden package?

- fromPackageFlag :: Bool

  Did the module export come from a package flag? (ToDo: track more information.

#### Instances

Instances details

Monoid ModuleOrigin |
Instance details Defined in GHC.Unit.State Methods mempty :: ModuleOrigin # mappend :: ModuleOrigin -> ModuleOrigin -> ModuleOrigin # mconcat :: [ModuleOrigin] -> ModuleOrigin #
Semigroup ModuleOrigin |
Instance details Defined in GHC.Unit.State Methods (<>) :: ModuleOrigin -> ModuleOrigin -> ModuleOrigin # sconcat :: NonEmpty ModuleOrigin -> ModuleOrigin # stimes :: Integral b => b -> ModuleOrigin -> ModuleOrigin #
Outputable ModuleOrigin |
Instance details Defined in GHC.Unit.State Methods ppr :: ModuleOrigin -> SDoc #

newtype PackageName #

Constructors

PackageName |

Fields

- unPackageName :: FastString

#### Instances

Instances details

Show PackageName # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> PackageName -> ShowS # show :: PackageName -> String # showList :: [PackageName] -> ShowS #
Uniquable PackageName |
Instance details Defined in GHC.Unit.Info Methods getUnique :: PackageName -> Unique #
Outputable PackageName |
Instance details Defined in GHC.Unit.Info Methods ppr :: PackageName -> SDoc #
Eq PackageName |
Instance details Defined in GHC.Unit.Info Methods (==) :: PackageName -> PackageName -> Bool # (/=) :: PackageName -> PackageName -> Bool #

# Linker

data Unlinked #

Objects which have yet to be linked by the compiler

Constructors

DotO ObjFile | An object file (.o)
DotA FilePath | Static archive file (.a)
DotDLL FilePath | Dynamically linked library file (.so, .dll, .dylib)
CoreBindings WholeCoreBindings | Serialised core which we can turn into BCOs (or object files), or used by some other backend See Note [Interface Files with Core Definitions]
LoadedBCOs [Unlinked] | A list of BCOs, but hidden behind extra indirection to avoid being too strict.
BCOs CompiledByteCode [SptEntry] | A byte-code object, lives only in memory. Also carries some static pointer table entries which should be loaded along with the BCOs. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTable.

#### Instances

Instances details

NFData Unlinked # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: Unlinked -> () #
Outputable Unlinked |
Instance details Defined in GHC.Linker.Types Methods ppr :: Unlinked -> SDoc #

data Linkable #

Information we can use to dynamically link modules into the compiler

Constructors

LM |

Fields

- linkableTime :: !UTCTime

  Time at which this linkable was built (i.e. when the bytecodes were produced, or the mod date on the files)

- linkableModule :: !Module

  The linkable module itself

- linkableUnlinked :: [Unlinked]

  Those files and chunks of code we have yet to link.

  INVARIANT: A valid linkable always has at least one `Unlinked` item.

#### Instances

Instances details

Show Linkable # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> Linkable -> ShowS # show :: Linkable -> String # showList :: [Linkable] -> ShowS #
NFData Linkable # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: Linkable -> () #
Outputable Linkable |
Instance details Defined in GHC.Linker.Types Methods ppr :: Linkable -> SDoc #

unload :: HscEnv -> [Linkable] -> IO () #

# Hooks

data Hooks #

runMetaHook :: Hooks -> Maybe (MetaHook TcM) #

type MetaHook (f :: Type -> Type) = MetaRequest -> LHsExpr GhcTc -> f MetaResult #

data MetaRequest #

The supported metaprogramming result types

Constructors

MetaE (LHsExpr GhcPs -> MetaResult) |
MetaP (LPat GhcPs -> MetaResult) |
MetaT (LHsType GhcPs -> MetaResult) |
MetaD ([LHsDecl GhcPs] -> MetaResult) |
MetaAW (Serialized -> MetaResult) |

metaRequestE :: Functor f => MetaHook f -> LHsExpr GhcTc -> f (LHsExpr GhcPs) #

metaRequestP :: Functor f => MetaHook f -> LHsExpr GhcTc -> f (LPat GhcPs) #

metaRequestT :: Functor f => MetaHook f -> LHsExpr GhcTc -> f (LHsType GhcPs) #

metaRequestD :: Functor f => MetaHook f -> LHsExpr GhcTc -> f [LHsDecl GhcPs] #

metaRequestAW :: Functor f => MetaHook f -> LHsExpr GhcTc -> f Serialized #

# HPT

addToHpt :: HomePackageTable -> ModuleName -> HomeModInfo -> HomePackageTable #

addListToHpt :: HomePackageTable -> [(ModuleName, HomeModInfo)] -> HomePackageTable #

# Driver-Make

data Target #

A compilation target.

A target may be supplied with the actual text of the module. If so, use this instead of the file contents (this is for use in an IDE where the file hasn't been saved by the user yet).

These fields are strict because Targets are long lived.

Constructors

Target |

Fields

- targetId :: !TargetId

  module or filename

- targetAllowObjCode :: !Bool

  object code allowed?

- targetUnitId :: !UnitId

  id of the unit this target is part of

- targetContents :: !(Maybe (InputFileBuffer, UTCTime))

  Optional in-memory buffer containing the source code GHC should use for this target instead of reading it from disk.

  Since GHC version 8.10 modules which require preprocessors such as Literate Haskell or CPP to run are also supported.

  If a corresponding source file does not exist on disk this will result in a `SourceError` exception if `targetId = TargetModule _` is used. However together with `targetId = TargetFile _` GHC will not complain about the file missing.

#### Instances

Instances details

Outputable Target |
Instance details Defined in GHC.Types.Target Methods ppr :: Target -> SDoc #

data TargetId #

Constructors

TargetModule !ModuleName | A module name: search for the file
TargetFile !FilePath !(Maybe Phase) | A filename: preprocess & parse it to find the module name. If specified, the Phase indicates how to compile this file (which phase to start from). Nothing indicates the starting phase should be determined from the suffix of the filename.

#### Instances

Instances details

Outputable TargetId |
Instance details Defined in GHC.Types.Target Methods ppr :: TargetId -> SDoc #
Eq TargetId |
Instance details Defined in GHC.Types.Target Methods (==) :: TargetId -> TargetId -> Bool # (/=) :: TargetId -> TargetId -> Bool #

mkSimpleTarget :: DynFlags -> FilePath -> Target #

# GHCi

initObjLinker :: HscEnv -> IO () #

loadDLL :: HscEnv -> String -> IO (Maybe String) #

data InteractiveImport #

Constructors

IIDecl (ImportDecl GhcPs) | Bring the exports of a particular module (filtered by an import decl) into scope
IIModule ModuleName | Bring into scope the entire top-level envt of of this module, including the things imported into it.

#### Instances

Instances details

Show InteractiveImport # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> InteractiveImport -> ShowS # show :: InteractiveImport -> String # showList :: [InteractiveImport] -> ShowS #
Outputable InteractiveImport |
Instance details Defined in GHC.Runtime.Context Methods ppr :: InteractiveImport -> SDoc #

getContext :: GhcMonad m => m [InteractiveImport] #

Get the interactive evaluation context, consisting of a pair of the set of modules from which we take the full top-level scope, and the set of modules from which we take just the exports respectively.

setContext :: GhcMonad m => [InteractiveImport] -> m () #

Set the interactive evaluation context.

(setContext imports) sets the ic_imports field (which in turn determines what is in scope at the prompt) to `imports`, and updates the icReaderEnv environment to reflect it.

We retain in scope all the things defined at the prompt, and kept in ic_tythings. (Indeed, they shadow stuff from ic_imports.)

parseImportDecl :: GhcMonad m => String -> m (ImportDecl GhcPs) #

runDecls :: GhcMonad m => String -> m [Name] #

type Warn = Located DriverMessage #

A command-line warning message and the reason it arose

This used to be own type, but now it's just ``MsgEnvelope` `DriverMessage``.

# ModLocation

data ModLocation #

Module Location

Where a module lives on the file system: the actual locations of the .hs, .hi, .dyn_hi, .o, .dyn_o and .hie files, if we have them.

For a module in another unit, the ml_hs_file and ml_obj_file components of ModLocation are undefined.

The locations specified by a ModLocation may or may not correspond to actual files yet: for example, even if the object file doesn't exist, the ModLocation still contains the path to where the object file will reside if/when it is created.

The paths of anything which can affect recompilation should be placed inside ModLocation.

When a ModLocation is created none of the filepaths will have -boot suffixes. This is because in --make mode the ModLocation is put in the finder cache which is indexed by ModuleName, when a ModLocation is retrieved from the FinderCache the boot suffixes are appended. The other case is in -c mode, there the ModLocation immediately gets given the boot suffixes in mkOneShotModLocation.

#### Instances

Instances details

Show ModLocation |
Instance details Defined in GHC.Unit.Module.Location Methods showsPrec :: Int -> ModLocation -> ShowS # show :: ModLocation -> String # showList :: [ModLocation] -> ShowS #
Outputable ModLocation |
Instance details Defined in GHC.Unit.Module.Location Methods ppr :: ModLocation -> SDoc #

ml_hs_file :: ModLocation -> Maybe FilePath #

The source file, if we have one. Package modules probably don't have source files.

ml_obj_file :: ModLocation -> FilePath #

Where the .o file is, whether or not it exists yet. (might not exist either because the module hasn't been compiled yet, or because it is part of a unit with a .a file)

ml_hi_file :: ModLocation -> FilePath #

Where the .hi file is, whether or not it exists yet. Always of form foo.hi, even if there is an hi-boot file (we add the -boot suffix later)

ml_hie_file :: ModLocation -> FilePath #

Where the .hie file is, whether or not it exists yet.

# DataCon

dataConExTyCoVars :: DataCon -> [TyCoVar] #

The existentially-quantified type/coercion variables of the constructor including dependent (kind-) GADT equalities

# Role

data Role #

See Note [Roles] in GHC.Core.Coercion

Order of constructors matters: the Ord instance coincides with the *super*typing relation on roles.

Constructors

Nominal |
Representational |
Phantom |

#### Instances

Instances details

Data Role |

Instance details

Defined in Language.Haskell.Syntax.Basic

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Role -> c Role #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Role #

toConstr :: Role -> Constr #

dataTypeOf :: Role -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Role) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Role) #

gmapT :: (forall b. Data b => b -> b) -> Role -> Role #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r #

gmapQ :: (forall d. Data d => d -> u) -> Role -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Role -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Role -> m Role #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role #

Eq Role |
Instance details Defined in Language.Haskell.Syntax.Basic Methods (==) :: Role -> Role -> Bool # (/=) :: Role -> Role -> Bool #
Ord Role |
Instance details Defined in Language.Haskell.Syntax.Basic Methods compare :: Role -> Role -> Ordering # (<) :: Role -> Role -> Bool # (<=) :: Role -> Role -> Bool # (>) :: Role -> Role -> Bool # (>=) :: Role -> Role -> Bool # max :: Role -> Role -> Role # min :: Role -> Role -> Role #
type Anno (Maybe Role) |
Instance details Defined in GHC.Hs.Decls type Anno (Maybe Role) = SrcAnn NoEpAnns
type Anno (Maybe Role) |
Instance details Defined in GHC.Hs.Decls type Anno (Maybe Role) = SrcAnn NoEpAnns

# Panic

data PlainGhcException #

This type is very similar to `GhcException`, but it omits the constructors that involve pretty-printing via `SDoc`. Due to the implementation of `fromException` for `GhcException`, this type can be caught as a `GhcException`.

Note that this should only be used for throwing exceptions, not for catching, as `GhcException` will not be converted to this type when catching.

#### Instances

Instances details

Exception PlainGhcException |
Instance details Defined in GHC.Utils.Panic.Plain Methods toException :: PlainGhcException -> SomeException # fromException :: SomeException -> Maybe PlainGhcException # displayException :: PlainGhcException -> String #
Show PlainGhcException |
Instance details Defined in GHC.Utils.Panic.Plain Methods showsPrec :: Int -> PlainGhcException -> ShowS # show :: PlainGhcException -> String # showList :: [PlainGhcException] -> ShowS #

# Other

data CoreModule #

A CoreModule consists of just the fields of a `ModGuts` that are needed for the `compileToCoreModule` interface.

Constructors

CoreModule |

Fields

- cm_module :: !Module

  Module name

- cm_types :: !TypeEnv

  Type environment for types declared in this module

- cm_binds :: CoreProgram

  Declarations

- cm_safe :: SafeHaskellMode

  Safe Haskell mode

#### Instances

Instances details

Show CoreModule # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> CoreModule -> ShowS # show :: CoreModule -> String # showList :: [CoreModule] -> ShowS #
NFData CoreModule # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: CoreModule -> () #
Outputable CoreModule |
Instance details Defined in GHC Methods ppr :: CoreModule -> SDoc #

data SafeHaskellMode #

The various Safe Haskell modes

Constructors

Sf_None | inferred unsafe
Sf_Unsafe | declared and checked
Sf_Trustworthy | declared and checked
Sf_Safe | declared and checked
Sf_SafeInferred | inferred as safe
Sf_Ignore | `-fno-safe-haskell` state

#### Instances

Instances details

Show SafeHaskellMode |
Instance details Defined in GHC.Types.SafeHaskell Methods showsPrec :: Int -> SafeHaskellMode -> ShowS # show :: SafeHaskellMode -> String # showList :: [SafeHaskellMode] -> ShowS #
NFData SafeHaskellMode # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: SafeHaskellMode -> () #
Outputable SafeHaskellMode |
Instance details Defined in GHC.Types.SafeHaskell Methods ppr :: SafeHaskellMode -> SDoc #
Eq SafeHaskellMode |
Instance details Defined in GHC.Types.SafeHaskell Methods (==) :: SafeHaskellMode -> SafeHaskellMode -> Bool # (/=) :: SafeHaskellMode -> SafeHaskellMode -> Bool #

pattern GRE :: Name -> Parent -> Bool -> [ImportSpec] -> GlobalRdrElt #

gre_name :: GlobalRdrElt -> Name #

gre_imp :: GlobalRdrElt -> [ImportSpec] #

gre_lcl :: GlobalRdrElt -> Bool #

gre_par :: GlobalRdrElt -> Parent #

collectHsBindsBinders :: CollectPass p => Bag (XRec p (HsBindLR p idR)) -> [IdP p] #

# Util Module re-exports

class Uniquable a where #

Class of things that we can obtain a `Unique` from

Methods

getUnique :: a -> Unique #

#### Instances

Instances details

Uniquable Label |
Instance details Defined in GHC.Cmm.Dataflow.Label Methods getUnique :: Label -> Unique #
Uniquable LocalReg |
Instance details Defined in GHC.Cmm.Reg Methods getUnique :: LocalReg -> Unique #
Uniquable Reg | so we can put regs in UniqSets
Instance details Defined in GHC.CmmToAsm.Reg.Graph.Base Methods getUnique :: Reg -> Unique #
Uniquable Store |
Instance details Defined in GHC.CmmToAsm.Reg.Graph.SpillClean Methods getUnique :: Store -> Unique #
Uniquable SymName |
Instance details Defined in GHC.CmmToAsm.Wasm.Types Methods getUnique :: SymName -> Unique #
Uniquable Class |
Instance details Defined in GHC.Core.Class Methods getUnique :: Class -> Unique #
Uniquable CoAxiomRule |
Instance details Defined in GHC.Core.Coercion.Axiom Methods getUnique :: CoAxiomRule -> Unique #
Uniquable ConLike |
Instance details Defined in GHC.Core.ConLike Methods getUnique :: ConLike -> Unique #
Uniquable DataCon |
Instance details Defined in GHC.Core.DataCon Methods getUnique :: DataCon -> Unique #
Uniquable PatSyn |
Instance details Defined in GHC.Core.PatSyn Methods getUnique :: PatSyn -> Unique #
Uniquable CoercionHole |
Instance details Defined in GHC.Core.TyCo.Rep Methods getUnique :: CoercionHole -> Unique #
Uniquable TyCon |
Instance details Defined in GHC.Core.TyCon Methods getUnique :: TyCon -> Unique #
Uniquable FastString |
Instance details Defined in GHC.Types.Unique Methods getUnique :: FastString -> Unique #
Uniquable Ident |
Instance details Defined in GHC.JS.Unsat.Syntax Methods getUnique :: Ident -> Unique #
Uniquable RealReg |
Instance details Defined in GHC.Platform.Reg Methods getUnique :: RealReg -> Unique #
Uniquable Reg |
Instance details Defined in GHC.Platform.Reg Methods getUnique :: Reg -> Unique #
Uniquable VirtualReg |
Instance details Defined in GHC.Platform.Reg Methods getUnique :: VirtualReg -> Unique #
Uniquable RegClass |
Instance details Defined in GHC.Platform.Reg.Class Methods getUnique :: RegClass -> Unique #
Uniquable EvBindsVar |
Instance details Defined in GHC.Tc.Types.Evidence Methods getUnique :: EvBindsVar -> Unique #
Uniquable SkolemInfo |
Instance details Defined in GHC.Tc.Types.Origin Methods getUnique :: SkolemInfo -> Unique #
Uniquable ConLikeName |
Instance details Defined in GHC.Types.GREInfo Methods getUnique :: ConLikeName -> Unique #
Uniquable Name |
Instance details Defined in GHC.Types.Name Methods getUnique :: Name -> Unique #
Uniquable NameSpace |
Instance details Defined in GHC.Types.Name.Occurrence Methods getUnique :: NameSpace -> Unique #
Uniquable Unique |
Instance details Defined in GHC.Types.Unique Methods getUnique :: Unique -> Unique #
Uniquable Var |
Instance details Defined in GHC.Types.Var Methods getUnique :: Var -> Unique #
Uniquable PackageId |
Instance details Defined in GHC.Unit.Info Methods getUnique :: PackageId -> Unique #
Uniquable PackageName |
Instance details Defined in GHC.Unit.Info Methods getUnique :: PackageName -> Unique #
Uniquable WarningCategory |
Instance details Defined in GHC.Unit.Module.Warnings Methods getUnique :: WarningCategory -> Unique #
Uniquable Module |
Instance details Defined in GHC.Unit.Types Methods getUnique :: Module -> Unique #
Uniquable UnitId |
Instance details Defined in GHC.Unit.Types Methods getUnique :: UnitId -> Unique #
Uniquable ModuleName |
Instance details Defined in GHC.Types.Unique Methods getUnique :: ModuleName -> Unique #
Uniquable Int |
Instance details Defined in GHC.Types.Unique Methods getUnique :: Int -> Unique #
Uniquable (CoAxiom br) |
Instance details Defined in GHC.Core.Coercion.Axiom Methods getUnique :: CoAxiom br -> Unique #
Uniquable unit => Uniquable (Definite unit) |
Instance details Defined in GHC.Unit.Types Methods getUnique :: Definite unit -> Unique #
IsUnitId u => Uniquable (GenUnit u) |
Instance details Defined in GHC.Unit.Types Methods getUnique :: GenUnit u -> Unique #

hasKey :: Uniquable a => a -> Unique -> Bool #

allNameStrings :: Infinite String #

allNameStringList :: [String] #

itName :: Unique -> SrcSpan -> Name #

mkUnboundName :: OccName -> Name #

isUnboundName :: Name -> Bool #

basicKnownKeyNames :: [Name] #

genericTyConNames :: [Name] #

pRELUDE :: Module #

gHC_PRIM :: Module #

gHC_PRIM_PANIC :: Module #

gHC_TYPES :: Module #

gHC_MAGIC :: Module #

gHC_MAGIC_DICT :: Module #

gHC_CSTRING :: Module #

gHC_CLASSES :: Module #

gHC_PRIMOPWRAPPERS :: Module #

gHC_BASE :: Module #

gHC_ENUM :: Module #

gHC_GHCI :: Module #

gHC_GHCI_HELPERS :: Module #

gHC_SHOW :: Module #

gHC_READ :: Module #

gHC_NUM :: Module #

gHC_MAYBE :: Module #

gHC_NUM_INTEGER :: Module #

gHC_NUM_NATURAL :: Module #

gHC_NUM_BIGNAT :: Module #

gHC_LIST :: Module #

gHC_TUPLE :: Module #

gHC_TUPLE_PRIM :: Module #

dATA_EITHER :: Module #

dATA_LIST :: Module #

dATA_STRING :: Module #

dATA_FOLDABLE :: Module #

dATA_TRAVERSABLE :: Module #

gHC_CONC :: Module #

gHC_IO :: Module #

gHC_IO_Exception :: Module #

gHC_ST :: Module #

gHC_IX :: Module #

gHC_STABLE :: Module #

gHC_PTR :: Module #

gHC_ERR :: Module #

gHC_REAL :: Module #

gHC_FLOAT :: Module #

gHC_TOP_HANDLER :: Module #

sYSTEM_IO :: Module #

dYNAMIC :: Module #

tYPEABLE :: Module #

tYPEABLE_INTERNAL :: Module #

gENERICS :: Module #

rEAD_PREC :: Module #

lEX :: Module #

gHC_INT :: Module #

gHC_WORD :: Module #

mONAD :: Module #

mONAD_FIX :: Module #

mONAD_ZIP :: Module #

mONAD_FAIL :: Module #

aRROW :: Module #

gHC_DESUGAR :: Module #

rANDOM :: Module #

gHC_EXTS :: Module #

gHC_IS_LIST :: Module #

cONTROL_EXCEPTION_BASE :: Module #

gHC_GENERICS :: Module #

gHC_TYPEERROR :: Module #

gHC_TYPELITS :: Module #

gHC_TYPELITS_INTERNAL :: Module #

gHC_TYPENATS :: Module #

gHC_TYPENATS_INTERNAL :: Module #

dATA_COERCE :: Module #

dEBUG_TRACE :: Module #

uNSAFE_COERCE :: Module #

fOREIGN_C_CONSTPTR :: Module #

gHC_SRCLOC :: Module #

gHC_STACK :: Module #

gHC_STACK_TYPES :: Module #

gHC_STATICPTR :: Module #

gHC_STATICPTR_INTERNAL :: Module #

gHC_FINGERPRINT_TYPE :: Module #

gHC_OVER_LABELS :: Module #

gHC_RECORDS :: Module #

rOOT_MAIN :: Module #

mkInteractiveModule :: String -> Module #

pRELUDE_NAME :: ModuleName #

mAIN_NAME :: ModuleName #

mkPrimModule :: FastString -> Module #

mkBignumModule :: FastString -> Module #

mkBaseModule :: FastString -> Module #

mkBaseModule_ :: ModuleName -> Module #

mkThisGhcModule :: FastString -> Module #

mkThisGhcModule_ :: ModuleName -> Module #

mkMainModule :: FastString -> Module #

mkMainModule_ :: ModuleName -> Module #

main_RDR_Unqual :: RdrName #

eq_RDR :: RdrName #

ge_RDR :: RdrName #

le_RDR :: RdrName #

lt_RDR :: RdrName #

gt_RDR :: RdrName #

compare_RDR :: RdrName #

ltTag_RDR :: RdrName #

eqTag_RDR :: RdrName #

gtTag_RDR :: RdrName #

eqClass_RDR :: RdrName #

numClass_RDR :: RdrName #

ordClass_RDR :: RdrName #

enumClass_RDR :: RdrName #

monadClass_RDR :: RdrName #

map_RDR :: RdrName #

append_RDR :: RdrName #

foldr_RDR :: RdrName #

build_RDR :: RdrName #

returnM_RDR :: RdrName #

bindM_RDR :: RdrName #

failM_RDR :: RdrName #

left_RDR :: RdrName #

right_RDR :: RdrName #

fromEnum_RDR :: RdrName #

toEnum_RDR :: RdrName #

enumFrom_RDR :: RdrName #

enumFromTo_RDR :: RdrName #

enumFromThen_RDR :: RdrName #

enumFromThenTo_RDR :: RdrName #

ratioDataCon_RDR :: RdrName #

integerAdd_RDR :: RdrName #

integerMul_RDR :: RdrName #

ioDataCon_RDR :: RdrName #

newStablePtr_RDR :: RdrName #

bindIO_RDR :: RdrName #

returnIO_RDR :: RdrName #

fromInteger_RDR :: RdrName #

fromRational_RDR :: RdrName #

minus_RDR :: RdrName #

times_RDR :: RdrName #

plus_RDR :: RdrName #

toInteger_RDR :: RdrName #

toRational_RDR :: RdrName #

fromIntegral_RDR :: RdrName #

fromString_RDR :: RdrName #

fromList_RDR :: RdrName #

fromListN_RDR :: RdrName #

toList_RDR :: RdrName #

compose_RDR :: RdrName #

and_RDR :: RdrName #

not_RDR :: RdrName #

dataToTag_RDR :: RdrName #

succ_RDR :: RdrName #

pred_RDR :: RdrName #

minBound_RDR :: RdrName #

maxBound_RDR :: RdrName #

range_RDR :: RdrName #

inRange_RDR :: RdrName #

index_RDR :: RdrName #

unsafeIndex_RDR :: RdrName #

unsafeRangeSize_RDR :: RdrName #

readList_RDR :: RdrName #

readListDefault_RDR :: RdrName #

readListPrec_RDR :: RdrName #

readListPrecDefault_RDR :: RdrName #

readPrec_RDR :: RdrName #

parens_RDR :: RdrName #

choose_RDR :: RdrName #

lexP_RDR :: RdrName #

expectP_RDR :: RdrName #

readField_RDR :: RdrName #

readFieldHash_RDR :: RdrName #

readSymField_RDR :: RdrName #

punc_RDR :: RdrName #

ident_RDR :: RdrName #

symbol_RDR :: RdrName #

step_RDR :: RdrName #

alt_RDR :: RdrName #

reset_RDR :: RdrName #

prec_RDR :: RdrName #

pfail_RDR :: RdrName #

showsPrec_RDR :: RdrName #

shows_RDR :: RdrName #

showString_RDR :: RdrName #

showSpace_RDR :: RdrName #

showCommaSpace_RDR :: RdrName #

showParen_RDR :: RdrName #

error_RDR :: RdrName #

u1DataCon_RDR :: RdrName #

par1DataCon_RDR :: RdrName #

rec1DataCon_RDR :: RdrName #

k1DataCon_RDR :: RdrName #

m1DataCon_RDR :: RdrName #

l1DataCon_RDR :: RdrName #

r1DataCon_RDR :: RdrName #

prodDataCon_RDR :: RdrName #

comp1DataCon_RDR :: RdrName #

unPar1_RDR :: RdrName #

unRec1_RDR :: RdrName #

unK1_RDR :: RdrName #

unComp1_RDR :: RdrName #

from_RDR :: RdrName #

from1_RDR :: RdrName #

to_RDR :: RdrName #

to1_RDR :: RdrName #

datatypeName_RDR :: RdrName #

moduleName_RDR :: RdrName #

packageName_RDR :: RdrName #

isNewtypeName_RDR :: RdrName #

selName_RDR :: RdrName #

conName_RDR :: RdrName #

conFixity_RDR :: RdrName #

conIsRecord_RDR :: RdrName #

prefixDataCon_RDR :: RdrName #

infixDataCon_RDR :: RdrName #

leftAssocDataCon_RDR :: RdrName #

rightAssocDataCon_RDR :: RdrName #

notAssocDataCon_RDR :: RdrName #

uAddrDataCon_RDR :: RdrName #

uCharDataCon_RDR :: RdrName #

uDoubleDataCon_RDR :: RdrName #

uFloatDataCon_RDR :: RdrName #

uIntDataCon_RDR :: RdrName #

uWordDataCon_RDR :: RdrName #

uAddrHash_RDR :: RdrName #

uCharHash_RDR :: RdrName #

uDoubleHash_RDR :: RdrName #

uFloatHash_RDR :: RdrName #

uIntHash_RDR :: RdrName #

uWordHash_RDR :: RdrName #

fmap_RDR :: RdrName #

replace_RDR :: RdrName #

pure_RDR :: RdrName #

ap_RDR :: RdrName #

liftA2_RDR :: RdrName #

foldable_foldr_RDR :: RdrName #

foldMap_RDR :: RdrName #

null_RDR :: RdrName #

all_RDR :: RdrName #

traverse_RDR :: RdrName #

mempty_RDR :: RdrName #

mappend_RDR :: RdrName #

varQual_RDR :: Module -> FastString -> RdrName #

tcQual_RDR :: Module -> FastString -> RdrName #

clsQual_RDR :: Module -> FastString -> RdrName #

dataQual_RDR :: Module -> FastString -> RdrName #

fieldQual_RDR :: Module -> FastString -> FastString -> RdrName #

wildCardName :: Name #

runMainIOName :: Name #

runRWName :: Name #

orderingTyConName :: Name #

ordLTDataConName :: Name #

ordEQDataConName :: Name #

ordGTDataConName :: Name #

specTyConName :: Name #

eitherTyConName :: Name #

leftDataConName :: Name #

rightDataConName :: Name #

voidTyConName :: Name #

v1TyConName :: Name #

u1TyConName :: Name #

par1TyConName :: Name #

rec1TyConName :: Name #

k1TyConName :: Name #

m1TyConName :: Name #

sumTyConName :: Name #

prodTyConName :: Name #

compTyConName :: Name #

rTyConName :: Name #

dTyConName :: Name #

cTyConName :: Name #

sTyConName :: Name #

rec0TyConName :: Name #

d1TyConName :: Name #

c1TyConName :: Name #

s1TyConName :: Name #

repTyConName :: Name #

rep1TyConName :: Name #

uRecTyConName :: Name #

uAddrTyConName :: Name #

uCharTyConName :: Name #

uDoubleTyConName :: Name #

uFloatTyConName :: Name #

uIntTyConName :: Name #

uWordTyConName :: Name #

prefixIDataConName :: Name #

infixIDataConName :: Name #

leftAssociativeDataConName :: Name #

rightAssociativeDataConName :: Name #

notAssociativeDataConName :: Name #

sourceUnpackDataConName :: Name #

sourceNoUnpackDataConName :: Name #

noSourceUnpackednessDataConName :: Name #

sourceLazyDataConName :: Name #

sourceStrictDataConName :: Name #

noSourceStrictnessDataConName :: Name #

decidedLazyDataConName :: Name #

decidedStrictDataConName :: Name #

decidedUnpackDataConName :: Name #

metaDataDataConName :: Name #

metaConsDataConName :: Name #

metaSelDataConName :: Name #

divIntName :: Name #

modIntName :: Name #

cstringLengthName :: Name #

eqStringName :: Name #

unpackCStringName :: Name #

unpackCStringAppendName :: Name #

unpackCStringFoldrName :: Name #

unpackCStringUtf8Name :: Name #

unpackCStringAppendUtf8Name :: Name #

unpackCStringFoldrUtf8Name :: Name #

inlineIdName :: Name #

eqClassName :: Name #

eqName :: Name #

ordClassName :: Name #

geName :: Name #

functorClassName :: Name #

fmapName :: Name #

monadClassName :: Name #

thenMName :: Name #

bindMName :: Name #

returnMName :: Name #

monadFailClassName :: Name #

failMName :: Name #

applicativeClassName :: Name #

apAName :: Name #

pureAName :: Name #

thenAName :: Name #

foldableClassName :: Name #

traversableClassName :: Name #

semigroupClassName :: Name #

sappendName :: Name #

monoidClassName :: Name #

memptyName :: Name #

mappendName :: Name #

mconcatName :: Name #

joinMName :: Name #

alternativeClassName :: Name #

joinMIdKey :: Unique #

apAClassOpKey :: Unique #

pureAClassOpKey :: Unique #

thenAClassOpKey :: Unique #

alternativeClassKey :: Unique #

considerAccessibleName :: Name #

dollarName :: Name #

otherwiseIdName :: Name #

foldrName :: Name #

buildName :: Name #

augmentName :: Name #

mapName :: Name #

appendName :: Name #

assertName :: Name #

fromStringName :: Name #

numClassName :: Name #

fromIntegerName :: Name #

minusName :: Name #

negateName :: Name #

bnbVarQual :: String -> Unique -> Name #

bnnVarQual :: String -> Unique -> Name #

bniVarQual :: String -> Unique -> Name #

bignatFromWordListName :: Name #

bignatEqName :: Name #

bignatCompareName :: Name #

bignatCompareWordName :: Name #

naturalToWordName :: Name #

naturalPopCountName :: Name #

naturalShiftRName :: Name #

naturalShiftLName :: Name #

naturalAddName :: Name #

naturalSubName :: Name #

naturalSubThrowName :: Name #

naturalSubUnsafeName :: Name #

naturalMulName :: Name #

naturalQuotRemName :: Name #

naturalQuotName :: Name #

naturalRemName :: Name #

naturalAndName :: Name #

naturalAndNotName :: Name #

naturalOrName :: Name #

naturalXorName :: Name #

naturalTestBitName :: Name #

naturalBitName :: Name #

naturalGcdName :: Name #

naturalLcmName :: Name #

naturalLog2Name :: Name #

naturalLogBaseWordName :: Name #

naturalLogBaseName :: Name #

naturalPowModName :: Name #

naturalSizeInBaseName :: Name #

integerFromNaturalName :: Name #

integerToNaturalClampName :: Name #

integerToNaturalThrowName :: Name #

integerToNaturalName :: Name #

integerToWordName :: Name #

integerToIntName :: Name #

integerToWord64Name :: Name #

integerToInt64Name :: Name #

integerFromWordName :: Name #

integerFromWord64Name :: Name #

integerFromInt64Name :: Name #

integerAddName :: Name #

integerMulName :: Name #

integerSubName :: Name #

integerNegateName :: Name #

integerAbsName :: Name #

integerPopCountName :: Name #

integerQuotName :: Name #

integerRemName :: Name #

integerDivName :: Name #

integerModName :: Name #

integerDivModName :: Name #

integerQuotRemName :: Name #

integerEncodeFloatName :: Name #

integerEncodeDoubleName :: Name #

integerGcdName :: Name #

integerLcmName :: Name #

integerAndName :: Name #

integerOrName :: Name #

integerXorName :: Name #

integerComplementName :: Name #

integerBitName :: Name #

integerTestBitName :: Name #

integerShiftLName :: Name #

integerShiftRName :: Name #

rationalTyConName :: Name #

ratioTyConName :: Name #

ratioDataConName :: Name #

realClassName :: Name #

integralClassName :: Name #

realFracClassName :: Name #

fractionalClassName :: Name #

fromRationalName :: Name #

toIntegerName :: Name #

toRationalName :: Name #

fromIntegralName :: Name #

realToFracName :: Name #

mkRationalBase2Name :: Name #

mkRationalBase10Name :: Name #

floatingClassName :: Name #

realFloatClassName :: Name #

integerToFloatName :: Name #

integerToDoubleName :: Name #

naturalToFloatName :: Name #

naturalToDoubleName :: Name #

rationalToFloatName :: Name #

rationalToDoubleName :: Name #

ixClassName :: Name #

trModuleTyConName :: Name #

trModuleDataConName :: Name #

trNameTyConName :: Name #

trNameSDataConName :: Name #

trNameDDataConName :: Name #

trTyConTyConName :: Name #

trTyConDataConName :: Name #

kindRepTyConName :: Name #

kindRepTyConAppDataConName :: Name #

kindRepVarDataConName :: Name #

kindRepAppDataConName :: Name #

kindRepFunDataConName :: Name #

kindRepTYPEDataConName :: Name #

kindRepTypeLitSDataConName :: Name #

kindRepTypeLitDDataConName :: Name #

typeLitSortTyConName :: Name #

typeLitSymbolDataConName :: Name #

typeLitNatDataConName :: Name #

typeLitCharDataConName :: Name #

typeableClassName :: Name #

typeRepTyConName :: Name #

someTypeRepTyConName :: Name #

someTypeRepDataConName :: Name #

typeRepIdName :: Name #

mkTrTypeName :: Name #

mkTrConName :: Name #

mkTrAppName :: Name #

mkTrFunName :: Name #

typeNatTypeRepName :: Name #

typeSymbolTypeRepName :: Name #

typeCharTypeRepName :: Name #

trGhcPrimModuleName :: Name #

starKindRepName :: Name #

starArrStarKindRepName :: Name #

starArrStarArrStarKindRepName :: Name #

constraintKindRepName :: Name #

withDictClassName :: Name #

nonEmptyTyConName :: Name #

errorMessageTypeErrorFamName :: Name #

typeErrorTextDataConName :: Name #

typeErrorAppendDataConName :: Name #

typeErrorVAppendDataConName :: Name #

typeErrorShowTypeDataConName :: Name #

unsatisfiableClassName :: Name #

unsatisfiableIdName :: Name #

unsafeEqualityProofName :: Name #

unsafeEqualityTyConName :: Name #

unsafeReflDataConName :: Name #

unsafeCoercePrimName :: Name #

toDynName :: Name #

dataClassName :: Name #

assertErrorName :: Name #

traceName :: Name #

enumClassName :: Name #

enumFromName :: Name #

enumFromToName :: Name #

enumFromThenName :: Name #

enumFromThenToName :: Name #

boundedClassName :: Name #

concatName :: Name #

filterName :: Name #

zipName :: Name #

isListClassName :: Name #

fromListName :: Name #

fromListNName :: Name #

toListName :: Name #

getFieldName :: Name #

setFieldName :: Name #

showClassName :: Name #

readClassName :: Name #

genClassName :: Name #

gen1ClassName :: Name #

datatypeClassName :: Name #

constructorClassName :: Name #

selectorClassName :: Name #

genericClassNames :: [Name] #

ghciIoClassName :: Name #

ghciStepIoMName :: Name #

ioTyConName :: Name #

ioDataConName :: Name #

thenIOName :: Name #

bindIOName :: Name #

returnIOName :: Name #

failIOName :: Name #

int8TyConName :: Name #

int16TyConName :: Name #

int32TyConName :: Name #

int64TyConName :: Name #

word8TyConName :: Name #

word16TyConName :: Name #

word32TyConName :: Name #

word64TyConName :: Name #

ptrTyConName :: Name #

funPtrTyConName :: Name #

stablePtrTyConName :: Name #

newStablePtrName :: Name #

monadFixClassName :: Name #

mfixName :: Name #

arrAName :: Name #

composeAName :: Name #

firstAName :: Name #

appAName :: Name #

choiceAName :: Name #

loopAName :: Name #

guardMName :: Name #

liftMName :: Name #

mzipName :: Name #

toAnnotationWrapperName :: Name #

monadPlusClassName :: Name #

isStringClassName :: Name #

knownNatClassName :: Name #

knownSymbolClassName :: Name #

knownCharClassName :: Name #

fromLabelClassOpName :: Name #

ipClassName :: Name #

hasFieldClassName :: Name #

callStackTyConName :: Name #

emptyCallStackName :: Name #

pushCallStackName :: Name #

srcLocDataConName :: Name #

pLUGINS :: Module #

pluginTyConName :: Name #

frontendPluginTyConName :: Name #

makeStaticName :: Name #

staticPtrInfoTyConName :: Name #

staticPtrInfoDataConName :: Name #

staticPtrTyConName :: Name #

staticPtrDataConName :: Name #

fromStaticPtrName :: Name #

fingerprintDataConName :: Name #

constPtrConName :: Name #

varQual :: Module -> FastString -> Unique -> Name #

tcQual :: Module -> FastString -> Unique -> Name #

clsQual :: Module -> FastString -> Unique -> Name #

dcQual :: Module -> FastString -> Unique -> Name #

mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name #

boundedClassKey :: Unique #

enumClassKey :: Unique #

eqClassKey :: Unique #

floatingClassKey :: Unique #

fractionalClassKey :: Unique #

integralClassKey :: Unique #

monadClassKey :: Unique #

dataClassKey :: Unique #

functorClassKey :: Unique #

numClassKey :: Unique #

ordClassKey :: Unique #

readClassKey :: Unique #

realClassKey :: Unique #

realFloatClassKey :: Unique #

realFracClassKey :: Unique #

showClassKey :: Unique #

ixClassKey :: Unique #

typeableClassKey :: Unique #

withDictClassKey :: Unique #

monadFixClassKey :: Unique #

monadFailClassKey :: Unique #

monadPlusClassKey :: Unique #

randomClassKey :: Unique #

randomGenClassKey :: Unique #

isStringClassKey :: Unique #

applicativeClassKey :: Unique #

foldableClassKey :: Unique #

traversableClassKey :: Unique #

genClassKey :: Unique #

gen1ClassKey :: Unique #

datatypeClassKey :: Unique #

constructorClassKey :: Unique #

selectorClassKey :: Unique #

knownNatClassNameKey :: Unique #

knownSymbolClassNameKey :: Unique #

knownCharClassNameKey :: Unique #

ghciIoClassKey :: Unique #

semigroupClassKey :: Unique #

monoidClassKey :: Unique #

ipClassKey :: Unique #

hasFieldClassNameKey :: Unique #

addrPrimTyConKey :: Unique #

arrayPrimTyConKey :: Unique #

boolTyConKey :: Unique #

byteArrayPrimTyConKey :: Unique #

stringTyConKey :: Unique #

charPrimTyConKey :: Unique #

charTyConKey :: Unique #

doublePrimTyConKey :: Unique #

doubleTyConKey :: Unique #

floatPrimTyConKey :: Unique #

floatTyConKey :: Unique #

fUNTyConKey :: Unique #

intPrimTyConKey :: Unique #

intTyConKey :: Unique #

int8PrimTyConKey :: Unique #

int8TyConKey :: Unique #

int16PrimTyConKey :: Unique #

int16TyConKey :: Unique #

int32PrimTyConKey :: Unique #

int32TyConKey :: Unique #

int64PrimTyConKey :: Unique #

int64TyConKey :: Unique #

integerTyConKey :: Unique #

naturalTyConKey :: Unique #

listTyConKey :: Unique #

foreignObjPrimTyConKey :: Unique #

maybeTyConKey :: Unique #

weakPrimTyConKey :: Unique #

mutableArrayPrimTyConKey :: Unique #

mutableByteArrayPrimTyConKey :: Unique #

orderingTyConKey :: Unique #

mVarPrimTyConKey :: Unique #

ioPortPrimTyConKey :: Unique #

ratioTyConKey :: Unique #

rationalTyConKey :: Unique #

realWorldTyConKey :: Unique #

stablePtrPrimTyConKey :: Unique #

stablePtrTyConKey :: Unique #

eqTyConKey :: Unique #

heqTyConKey :: Unique #

ctArrowTyConKey :: Unique #

ccArrowTyConKey :: Unique #

tcArrowTyConKey :: Unique #

statePrimTyConKey :: Unique #

stableNamePrimTyConKey :: Unique #

stableNameTyConKey :: Unique #

eqPrimTyConKey :: Unique #

eqReprPrimTyConKey :: Unique #

eqPhantPrimTyConKey :: Unique #

mutVarPrimTyConKey :: Unique #

ioTyConKey :: Unique #

wordPrimTyConKey :: Unique #

wordTyConKey :: Unique #

word8PrimTyConKey :: Unique #

word8TyConKey :: Unique #

word16PrimTyConKey :: Unique #

word16TyConKey :: Unique #

word32PrimTyConKey :: Unique #

word32TyConKey :: Unique #

word64PrimTyConKey :: Unique #

word64TyConKey :: Unique #

kindConKey :: Unique #

boxityConKey :: Unique #

typeConKey :: Unique #

threadIdPrimTyConKey :: Unique #

bcoPrimTyConKey :: Unique #

ptrTyConKey :: Unique #

funPtrTyConKey :: Unique #

tVarPrimTyConKey :: Unique #

compactPrimTyConKey :: Unique #

stackSnapshotPrimTyConKey :: Unique #

promptTagPrimTyConKey :: Unique #

eitherTyConKey :: Unique #

voidTyConKey :: Unique #

nonEmptyTyConKey :: Unique #

dictTyConKey :: Unique #

liftedTypeKindTyConKey :: Unique #

unliftedTypeKindTyConKey :: Unique #

tYPETyConKey :: Unique #

cONSTRAINTTyConKey :: Unique #

constraintKindTyConKey :: Unique #

levityTyConKey :: Unique #

runtimeRepTyConKey :: Unique #

vecCountTyConKey :: Unique #

vecElemTyConKey :: Unique #

liftedRepTyConKey :: Unique #

unliftedRepTyConKey :: Unique #

zeroBitRepTyConKey :: Unique #

zeroBitTypeTyConKey :: Unique #

pluginTyConKey :: Unique #

frontendPluginTyConKey :: Unique #

trTyConTyConKey :: Unique #

trModuleTyConKey :: Unique #

trNameTyConKey :: Unique #

kindRepTyConKey :: Unique #

typeLitSortTyConKey :: Unique #

v1TyConKey :: Unique #

u1TyConKey :: Unique #

par1TyConKey :: Unique #

rec1TyConKey :: Unique #

k1TyConKey :: Unique #

m1TyConKey :: Unique #

sumTyConKey :: Unique #

prodTyConKey :: Unique #

compTyConKey :: Unique #

rTyConKey :: Unique #

dTyConKey :: Unique #

cTyConKey :: Unique #

sTyConKey :: Unique #

rec0TyConKey :: Unique #

d1TyConKey :: Unique #

c1TyConKey :: Unique #

s1TyConKey :: Unique #

repTyConKey :: Unique #

rep1TyConKey :: Unique #

uRecTyConKey :: Unique #

uAddrTyConKey :: Unique #

uCharTyConKey :: Unique #

uDoubleTyConKey :: Unique #

uFloatTyConKey :: Unique #

uIntTyConKey :: Unique #

uWordTyConKey :: Unique #

unsatisfiableClassNameKey :: Unique #

errorMessageTypeErrorFamKey :: Unique #

coercibleTyConKey :: Unique #

proxyPrimTyConKey :: Unique #

specTyConKey :: Unique #

anyTyConKey :: Unique #

smallArrayPrimTyConKey :: Unique #

smallMutableArrayPrimTyConKey :: Unique #

staticPtrTyConKey :: Unique #

staticPtrInfoTyConKey :: Unique #

callStackTyConKey :: Unique #

typeRepTyConKey :: Unique #

someTypeRepTyConKey :: Unique #

someTypeRepDataConKey :: Unique #

typeSymbolAppendFamNameKey :: Unique #

unsafeEqualityTyConKey :: Unique #

multiplicityTyConKey :: Unique #

unrestrictedFunTyConKey :: Unique #

multMulTyConKey :: Unique #

int8X16PrimTyConKey :: Unique #

int16X8PrimTyConKey :: Unique #

int32X4PrimTyConKey :: Unique #

int64X2PrimTyConKey :: Unique #

int8X32PrimTyConKey :: Unique #

int16X16PrimTyConKey :: Unique #

int32X8PrimTyConKey :: Unique #

int64X4PrimTyConKey :: Unique #

int8X64PrimTyConKey :: Unique #

int16X32PrimTyConKey :: Unique #

int32X16PrimTyConKey :: Unique #

int64X8PrimTyConKey :: Unique #

word8X16PrimTyConKey :: Unique #

word16X8PrimTyConKey :: Unique #

word32X4PrimTyConKey :: Unique #

word64X2PrimTyConKey :: Unique #

word8X32PrimTyConKey :: Unique #

word16X16PrimTyConKey :: Unique #

word32X8PrimTyConKey :: Unique #

word64X4PrimTyConKey :: Unique #

word8X64PrimTyConKey :: Unique #

word16X32PrimTyConKey :: Unique #

word32X16PrimTyConKey :: Unique #

word64X8PrimTyConKey :: Unique #

floatX4PrimTyConKey :: Unique #

doubleX2PrimTyConKey :: Unique #

floatX8PrimTyConKey :: Unique #

doubleX4PrimTyConKey :: Unique #

floatX16PrimTyConKey :: Unique #

doubleX8PrimTyConKey :: Unique #

typeSymbolKindConNameKey :: Unique #

typeCharKindConNameKey :: Unique #

typeNatAddTyFamNameKey :: Unique #

typeNatMulTyFamNameKey :: Unique #

typeNatExpTyFamNameKey :: Unique #

typeNatSubTyFamNameKey :: Unique #

typeSymbolCmpTyFamNameKey :: Unique #

typeNatCmpTyFamNameKey :: Unique #

typeCharCmpTyFamNameKey :: Unique #

typeLeqCharTyFamNameKey :: Unique #

typeNatDivTyFamNameKey :: Unique #

typeNatModTyFamNameKey :: Unique #

typeNatLogTyFamNameKey :: Unique #

typeConsSymbolTyFamNameKey :: Unique #

typeUnconsSymbolTyFamNameKey :: Unique #

typeCharToNatTyFamNameKey :: Unique #

typeNatToCharTyFamNameKey :: Unique #

constPtrTyConKey :: Unique #

charDataConKey :: Unique #

consDataConKey :: Unique #

doubleDataConKey :: Unique #

falseDataConKey :: Unique #

floatDataConKey :: Unique #

intDataConKey :: Unique #

nothingDataConKey :: Unique #

justDataConKey :: Unique #

eqDataConKey :: Unique #

nilDataConKey :: Unique #

ratioDataConKey :: Unique #

word8DataConKey :: Unique #

stableNameDataConKey :: Unique #

trueDataConKey :: Unique #

wordDataConKey :: Unique #

ioDataConKey :: Unique #

heqDataConKey :: Unique #

crossDataConKey :: Unique #

inlDataConKey :: Unique #

inrDataConKey :: Unique #

genUnitDataConKey :: Unique #

leftDataConKey :: Unique #

rightDataConKey :: Unique #

ordLTDataConKey :: Unique #

ordEQDataConKey :: Unique #

ordGTDataConKey :: Unique #

mkDictDataConKey :: Unique #

coercibleDataConKey :: Unique #

staticPtrDataConKey :: Unique #

staticPtrInfoDataConKey :: Unique #

fingerprintDataConKey :: Unique #

srcLocDataConKey :: Unique #

trTyConDataConKey :: Unique #

trModuleDataConKey :: Unique #

trNameSDataConKey :: Unique #

trNameDDataConKey :: Unique #

trGhcPrimModuleKey :: Unique #

typeErrorTextDataConKey :: Unique #

typeErrorAppendDataConKey :: Unique #

typeErrorVAppendDataConKey :: Unique #

typeErrorShowTypeDataConKey :: Unique #

prefixIDataConKey :: Unique #

infixIDataConKey :: Unique #

leftAssociativeDataConKey :: Unique #

rightAssociativeDataConKey :: Unique #

notAssociativeDataConKey :: Unique #

sourceUnpackDataConKey :: Unique #

sourceNoUnpackDataConKey :: Unique #

noSourceUnpackednessDataConKey :: Unique #

sourceLazyDataConKey :: Unique #

sourceStrictDataConKey :: Unique #

noSourceStrictnessDataConKey :: Unique #

decidedLazyDataConKey :: Unique #

decidedStrictDataConKey :: Unique #

decidedUnpackDataConKey :: Unique #

metaDataDataConKey :: Unique #

metaConsDataConKey :: Unique #

metaSelDataConKey :: Unique #

vecRepDataConKey :: Unique #

tupleRepDataConKey :: Unique #

sumRepDataConKey :: Unique #

boxedRepDataConKey :: Unique #

boxedRepDataConTyConKey :: Unique #

tupleRepDataConTyConKey :: Unique #

runtimeRepSimpleDataConKeys :: [Unique] #

liftedDataConKey :: Unique #

unliftedDataConKey :: Unique #

vecCountDataConKeys :: [Unique] #

vecElemDataConKeys :: [Unique] #

kindRepTyConAppDataConKey :: Unique #

kindRepVarDataConKey :: Unique #

kindRepAppDataConKey :: Unique #

kindRepFunDataConKey :: Unique #

kindRepTYPEDataConKey :: Unique #

kindRepTypeLitSDataConKey :: Unique #

kindRepTypeLitDDataConKey :: Unique #

typeLitSymbolDataConKey :: Unique #

typeLitNatDataConKey :: Unique #

typeLitCharDataConKey :: Unique #

unsafeReflDataConKey :: Unique #

oneDataConKey :: Unique #

manyDataConKey :: Unique #

integerISDataConKey :: Unique #

integerINDataConKey :: Unique #

integerIPDataConKey :: Unique #

naturalNSDataConKey :: Unique #

naturalNBDataConKey :: Unique #

wildCardKey :: Unique #

absentErrorIdKey :: Unique #

absentConstraintErrorIdKey :: Unique #

augmentIdKey :: Unique #

appendIdKey :: Unique #

buildIdKey :: Unique #

foldrIdKey :: Unique #

recSelErrorIdKey :: Unique #

seqIdKey :: Unique #

absentSumFieldErrorIdKey :: Unique #

eqStringIdKey :: Unique #

noMethodBindingErrorIdKey :: Unique #

nonExhaustiveGuardsErrorIdKey :: Unique #

impossibleErrorIdKey :: Unique #

impossibleConstraintErrorIdKey :: Unique #

patErrorIdKey :: Unique #

realWorldPrimIdKey :: Unique #

recConErrorIdKey :: Unique #

unpackCStringUtf8IdKey :: Unique #

unpackCStringAppendUtf8IdKey :: Unique #

unpackCStringFoldrUtf8IdKey :: Unique #

unpackCStringIdKey :: Unique #

unpackCStringAppendIdKey :: Unique #

unpackCStringFoldrIdKey :: Unique #

voidPrimIdKey :: Unique #

typeErrorIdKey :: Unique #

divIntIdKey :: Unique #

modIntIdKey :: Unique #

cstringLengthIdKey :: Unique #

concatIdKey :: Unique #

filterIdKey :: Unique #

zipIdKey :: Unique #

bindIOIdKey :: Unique #

returnIOIdKey :: Unique #

newStablePtrIdKey :: Unique #

printIdKey :: Unique #

failIOIdKey :: Unique #

nullAddrIdKey :: Unique #

voidArgIdKey :: Unique #

otherwiseIdKey :: Unique #

assertIdKey :: Unique #

leftSectionKey :: Unique #

rightSectionKey :: Unique #

rootMainKey :: Unique #

runMainKey :: Unique #

thenIOIdKey :: Unique #

lazyIdKey :: Unique #

assertErrorIdKey :: Unique #

oneShotKey :: Unique #

runRWKey :: Unique #

traceKey :: Unique #

nospecIdKey :: Unique #

inlineIdKey :: Unique #

mapIdKey :: Unique #

dollarIdKey :: Unique #

coercionTokenIdKey :: Unique #

considerAccessibleIdKey :: Unique #

noinlineIdKey :: Unique #

noinlineConstraintIdKey :: Unique #

integerToFloatIdKey :: Unique #

integerToDoubleIdKey :: Unique #

naturalToFloatIdKey :: Unique #

naturalToDoubleIdKey :: Unique #

rationalToFloatIdKey :: Unique #

rationalToDoubleIdKey :: Unique #

coerceKey :: Unique #

unboundKey :: Unique #

fromIntegerClassOpKey :: Unique #

minusClassOpKey :: Unique #

fromRationalClassOpKey :: Unique #

enumFromClassOpKey :: Unique #

enumFromThenClassOpKey :: Unique #

enumFromToClassOpKey :: Unique #

enumFromThenToClassOpKey :: Unique #

eqClassOpKey :: Unique #

geClassOpKey :: Unique #

negateClassOpKey :: Unique #

bindMClassOpKey :: Unique #

thenMClassOpKey :: Unique #

fmapClassOpKey :: Unique #

returnMClassOpKey :: Unique #

mfixIdKey :: Unique #

failMClassOpKey :: Unique #

fromLabelClassOpKey :: Unique #

arrAIdKey :: Unique #

composeAIdKey :: Unique #

firstAIdKey :: Unique #

appAIdKey :: Unique #

choiceAIdKey :: Unique #

loopAIdKey :: Unique #

fromStringClassOpKey :: Unique #

toAnnotationWrapperIdKey :: Unique #

fromIntegralIdKey :: Unique #

realToFracIdKey :: Unique #

toIntegerClassOpKey :: Unique #

toRationalClassOpKey :: Unique #

guardMIdKey :: Unique #

liftMIdKey :: Unique #

mzipIdKey :: Unique #

ghciStepIoMClassOpKey :: Unique #

isListClassKey :: Unique #

fromListClassOpKey :: Unique #

fromListNClassOpKey :: Unique #

toListClassOpKey :: Unique #

proxyHashKey :: Unique #

mkTyConKey :: Unique #

mkTrTypeKey :: Unique #

mkTrConKey :: Unique #

mkTrAppKey :: Unique #

typeNatTypeRepKey :: Unique #

typeSymbolTypeRepKey :: Unique #

typeCharTypeRepKey :: Unique #

typeRepIdKey :: Unique #

mkTrFunKey :: Unique #

starKindRepKey :: Unique #

starArrStarKindRepKey :: Unique #

starArrStarArrStarKindRepKey :: Unique #

constraintKindRepKey :: Unique #

toDynIdKey :: Unique #

eqSCSelIdKey :: Unique #

heqSCSelIdKey :: Unique #

coercibleSCSelIdKey :: Unique #

sappendClassOpKey :: Unique #

memptyClassOpKey :: Unique #

mappendClassOpKey :: Unique #

mconcatClassOpKey :: Unique #

emptyCallStackKey :: Unique #

pushCallStackKey :: Unique #

fromStaticPtrClassOpKey :: Unique #

makeStaticKey :: Unique #

unsafeEqualityProofIdKey :: Unique #

unsafeCoercePrimIdKey :: Unique #

getFieldClassOpKey :: Unique #

setFieldClassOpKey :: Unique #

unsatisfiableIdNameKey :: Unique #

integerFromNaturalIdKey :: Unique #

integerToNaturalClampIdKey :: Unique #

integerToNaturalThrowIdKey :: Unique #

integerToNaturalIdKey :: Unique #

integerToWordIdKey :: Unique #

integerToIntIdKey :: Unique #

integerToWord64IdKey :: Unique #

integerToInt64IdKey :: Unique #

integerAddIdKey :: Unique #

integerMulIdKey :: Unique #

integerSubIdKey :: Unique #

integerNegateIdKey :: Unique #

integerAbsIdKey :: Unique #

integerPopCountIdKey :: Unique #

integerQuotIdKey :: Unique #

integerRemIdKey :: Unique #

integerDivIdKey :: Unique #

integerModIdKey :: Unique #

integerDivModIdKey :: Unique #

integerQuotRemIdKey :: Unique #

integerEncodeFloatIdKey :: Unique #

integerEncodeDoubleIdKey :: Unique #

integerGcdIdKey :: Unique #

integerLcmIdKey :: Unique #

integerAndIdKey :: Unique #

integerOrIdKey :: Unique #

integerXorIdKey :: Unique #

integerComplementIdKey :: Unique #

integerBitIdKey :: Unique #

integerTestBitIdKey :: Unique #

integerShiftLIdKey :: Unique #

integerShiftRIdKey :: Unique #

integerFromWordIdKey :: Unique #

integerFromWord64IdKey :: Unique #

integerFromInt64IdKey :: Unique #

naturalToWordIdKey :: Unique #

naturalPopCountIdKey :: Unique #

naturalShiftRIdKey :: Unique #

naturalShiftLIdKey :: Unique #

naturalAddIdKey :: Unique #

naturalSubIdKey :: Unique #

naturalSubThrowIdKey :: Unique #

naturalSubUnsafeIdKey :: Unique #

naturalMulIdKey :: Unique #

naturalQuotRemIdKey :: Unique #

naturalQuotIdKey :: Unique #

naturalRemIdKey :: Unique #

naturalAndIdKey :: Unique #

naturalAndNotIdKey :: Unique #

naturalOrIdKey :: Unique #

naturalXorIdKey :: Unique #

naturalTestBitIdKey :: Unique #

naturalBitIdKey :: Unique #

naturalGcdIdKey :: Unique #

naturalLcmIdKey :: Unique #

naturalLog2IdKey :: Unique #

naturalLogBaseWordIdKey :: Unique #

naturalLogBaseIdKey :: Unique #

naturalPowModIdKey :: Unique #

naturalSizeInBaseIdKey :: Unique #

bignatFromWordListIdKey :: Unique #

bignatEqIdKey :: Unique #

bignatCompareIdKey :: Unique #

bignatCompareWordIdKey :: Unique #

mkRationalBase2IdKey :: Unique #

mkRationalBase10IdKey :: Unique #

numericClassKeys :: [Unique] #

fractionalClassKeys :: [Unique] #

standardClassKeys :: [Unique] #

derivableClassKeys :: [Unique] #

interactiveClassNames :: [Name] #

interactiveClassKeys :: [Unique] #

pretendNameIsInScope :: Name -> Bool #

Should this name be considered in-scope, even though it technically isn't?

This ensures that we don't filter out information because, e.g., Data.Kind.Type isn't imported.

See Note [pretendNameIsInScope].

module GHC.Builtin.Types

module GHC.Builtin.Types.Prim

module GHC.Builtin.Utils

module GHC.Core.Class

module GHC.Core.Coercion

module GHC.Core.ConLike

data SrcUnpackedness #

Source Unpackedness

What unpackedness the user requested

Constructors

SrcUnpack | {-# UNPACK #-} specified
SrcNoUnpack | {-# NOUNPACK #-} specified
NoSrcUnpack | no unpack pragma

#### Instances

Instances details

Data SrcUnpackedness |

Instance details

Defined in Language.Haskell.Syntax.Basic

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SrcUnpackedness -> c SrcUnpackedness #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SrcUnpackedness #

toConstr :: SrcUnpackedness -> Constr #

dataTypeOf :: SrcUnpackedness -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SrcUnpackedness) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SrcUnpackedness) #

gmapT :: (forall b. Data b => b -> b) -> SrcUnpackedness -> SrcUnpackedness #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SrcUnpackedness -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SrcUnpackedness -> r #

gmapQ :: (forall d. Data d => d -> u) -> SrcUnpackedness -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SrcUnpackedness -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SrcUnpackedness -> m SrcUnpackedness #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcUnpackedness -> m SrcUnpackedness #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcUnpackedness -> m SrcUnpackedness #

Eq SrcUnpackedness |
Instance details Defined in Language.Haskell.Syntax.Basic Methods (==) :: SrcUnpackedness -> SrcUnpackedness -> Bool # (/=) :: SrcUnpackedness -> SrcUnpackedness -> Bool #

data SrcStrictness #

Source Strictness

What strictness annotation the user wrote

Constructors

SrcLazy | Lazy, ie `~`
SrcStrict | Strict, ie `!`
NoSrcStrict | no strictness annotation

#### Instances

Instances details

Data SrcStrictness |

Instance details

Defined in Language.Haskell.Syntax.Basic

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SrcStrictness -> c SrcStrictness #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SrcStrictness #

toConstr :: SrcStrictness -> Constr #

dataTypeOf :: SrcStrictness -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SrcStrictness) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SrcStrictness) #

gmapT :: (forall b. Data b => b -> b) -> SrcStrictness -> SrcStrictness #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SrcStrictness -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SrcStrictness -> r #

gmapQ :: (forall d. Data d => d -> u) -> SrcStrictness -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SrcStrictness -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SrcStrictness -> m SrcStrictness #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcStrictness -> m SrcStrictness #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcStrictness -> m SrcStrictness #

Eq SrcStrictness |
Instance details Defined in Language.Haskell.Syntax.Basic Methods (==) :: SrcStrictness -> SrcStrictness -> Bool # (/=) :: SrcStrictness -> SrcStrictness -> Bool #

data FieldLabelString #

Field labels are just represented as strings; they are not necessarily unique (even within a module)

#### Instances

Instances details

Data FieldLabelString |

Instance details

Defined in Language.Haskell.Syntax.Basic

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FieldLabelString -> c FieldLabelString #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FieldLabelString #

toConstr :: FieldLabelString -> Constr #

dataTypeOf :: FieldLabelString -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FieldLabelString) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FieldLabelString) #

gmapT :: (forall b. Data b => b -> b) -> FieldLabelString -> FieldLabelString #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FieldLabelString -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FieldLabelString -> r #

gmapQ :: (forall d. Data d => d -> u) -> FieldLabelString -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> FieldLabelString -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> FieldLabelString -> m FieldLabelString #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldLabelString -> m FieldLabelString #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldLabelString -> m FieldLabelString #

NFData FieldLabelString |
Instance details Defined in Language.Haskell.Syntax.Basic Methods rnf :: FieldLabelString -> () #
Eq FieldLabelString |
Instance details Defined in Language.Haskell.Syntax.Basic Methods (==) :: FieldLabelString -> FieldLabelString -> Bool # (/=) :: FieldLabelString -> FieldLabelString -> Bool #
type Anno FieldLabelString |
Instance details Defined in GHC.Hs.Expr type Anno FieldLabelString = SrcSpanAnnN

type ConTag = Int #

A *one-index* constructor tag

Type of the tags associated with each constructor possibility or superclass selector

data FieldLabel #

Fields in an algebraic record type; see Note [FieldLabel].

Constructors

FieldLabel |

Fields

- flHasDuplicateRecordFields :: DuplicateRecordFields

  Was `DuplicateRecordFields` on in the defining module for this datatype?

- flHasFieldSelector :: FieldSelectors

  Was `FieldSelectors` enabled in the defining module for this datatype? See Note [NoFieldSelectors] in GHC.Rename.Env

- flSelector :: Name

  The `Name` of the selector function, which uniquely identifies the field label.

#### Instances

Instances details

Data FieldLabel |

Instance details

Defined in GHC.Types.FieldLabel

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FieldLabel -> c FieldLabel #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FieldLabel #

toConstr :: FieldLabel -> Constr #

dataTypeOf :: FieldLabel -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FieldLabel) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FieldLabel) #

gmapT :: (forall b. Data b => b -> b) -> FieldLabel -> FieldLabel #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FieldLabel -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FieldLabel -> r #

gmapQ :: (forall d. Data d => d -> u) -> FieldLabel -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> FieldLabel -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> FieldLabel -> m FieldLabel #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldLabel -> m FieldLabel #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldLabel -> m FieldLabel #

HasOccName FieldLabel |
Instance details Defined in GHC.Types.FieldLabel Methods occName :: FieldLabel -> OccName #
Binary Name => Binary FieldLabel | We need the `Binary Name` constraint here even though there is an instance defined in GHC.Types.Name, because the we have a SOURCE import, so the instance is not in scope. And the instance cannot be added to Name.hs-boot because GHC.Utils.Binary itself depends on GHC.Types.Name.
Instance details Defined in GHC.Types.FieldLabel Methods put_ :: BinHandle -> FieldLabel -> IO () # put :: BinHandle -> FieldLabel -> IO (Bin FieldLabel) # get :: BinHandle -> IO FieldLabel #
Outputable FieldLabel |
Instance details Defined in GHC.Types.FieldLabel Methods ppr :: FieldLabel -> SDoc #
Eq FieldLabel |
Instance details Defined in GHC.Types.FieldLabel Methods (==) :: FieldLabel -> FieldLabel -> Bool # (/=) :: FieldLabel -> FieldLabel -> Bool #

flLabel :: FieldLabel -> FieldLabelString #

User-visible label of a field.

fIRST_TAG :: ConTag #

Tags are allocated from here for real constructors or for superclass selectors

data EqSpec #

An `EqSpec` is a tyvar/type pair representing an equality made in rejigging a GADT constructor

#### Instances

Instances details

Outputable EqSpec |
Instance details Defined in GHC.Core.DataCon Methods ppr :: EqSpec -> SDoc #

data DataConRep #

Data Constructor Representation See Note [Data constructor workers and wrappers]

Constructors

NoDataConRep |
DCR |

Fields

- dcr_wrap_id :: Id
- dcr_boxer :: DataConBoxer
- dcr_arg_tys :: [Scaled Type]
- dcr_stricts :: [StrictnessMark]
- dcr_bangs :: [HsImplBang]

data DataCon #

A data constructor

- `AnnKeywordId` : `AnnOpen`, `AnnClose`,`AnnComma`

#### Instances

Instances details

Data DataCon |

Instance details

Defined in GHC.Core.DataCon

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DataCon -> c DataCon #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DataCon #

toConstr :: DataCon -> Constr #

dataTypeOf :: DataCon -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DataCon) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DataCon) #

gmapT :: (forall b. Data b => b -> b) -> DataCon -> DataCon #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DataCon -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DataCon -> r #

gmapQ :: (forall d. Data d => d -> u) -> DataCon -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> DataCon -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DataCon -> m DataCon #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DataCon -> m DataCon #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DataCon -> m DataCon #

NamedThing DataCon |
Instance details Defined in GHC.Core.DataCon Methods getOccName :: DataCon -> OccName # getName :: DataCon -> Name #
Uniquable DataCon |
Instance details Defined in GHC.Core.DataCon Methods getUnique :: DataCon -> Unique #
Outputable DataCon |
Instance details Defined in GHC.Core.DataCon Methods ppr :: DataCon -> SDoc #
OutputableBndr DataCon |
Instance details Defined in GHC.Core.DataCon Methods pprBndr :: BindingSite -> DataCon -> SDoc # pprPrefixOcc :: DataCon -> SDoc # pprInfixOcc :: DataCon -> SDoc # bndrIsJoin_maybe :: DataCon -> Maybe Int #
Eq DataCon |
Instance details Defined in GHC.Core.DataCon Methods (==) :: DataCon -> DataCon -> Bool # (/=) :: DataCon -> DataCon -> Bool #

promoteDataCon :: DataCon -> TyCon #

dataConWrapId :: DataCon -> Id #

Returns an Id which looks like the Haskell-source constructor by using the wrapper if it exists (see `dataConWrapId_maybe`) and failing over to the worker (see `dataConWorkId`)

isTypeDataCon :: DataCon -> Bool #

Is this data constructor in a "type data" declaration? See Note [Type data declarations] in GHC.Rename.Module.

isUnboxedSumDataCon :: DataCon -> Bool #

dataConFullSig :: DataCon -> ([TyVar], [TyCoVar], [EqSpec], ThetaType, [Scaled Type], Type) #

The "full signature" of the `DataCon` returns, in order:

1) The result of `dataConUnivTyVars`

2) The result of `dataConExTyCoVars`

3) The non-dependent GADT equalities. Dependent GADT equalities are implied by coercion variables in return value (2).

4) The other constraints of the data constructor type, excluding GADT equalities

5) The original argument types to the `DataCon` (i.e. before any change of the representation of the type) with linearity annotations

6) The original result type of the `DataCon`

dataConStupidTheta :: DataCon -> ThetaType #

The "stupid theta" of the `DataCon`, such as `data Eq a` in:

    data Eq a => T a = ...

See `Note [The stupid context]`.

dataConInstOrigArgTys :: DataCon -> [Type] -> [Scaled Type] #

Returns just the instantiated value argument types of a `DataCon`, (excluding dictionary args)

dataConFieldLabels :: DataCon -> [FieldLabel] #

The labels for the fields of this particular `DataCon`

dataConSourceArity :: DataCon -> Arity #

Source-level arity of the data constructor

dataConUserTyVarBinders :: DataCon -> [InvisTVBinder] #

`InvisTVBinder`s for the type variables of the constructor, in the order the user wrote them

dataConUserTyVars :: DataCon -> [TyVar] #

The type variables of the constructor, in the order the user wrote them

dataConTyCon :: DataCon -> TyCon #

The type constructor that we are building via this data constructor

dataConWorkId :: DataCon -> Id #

Get the Id of the `DataCon` worker: a function that is the "actual" constructor and has no top level binding in the program. The type may be different from the obvious one written in the source program. Panics if there is no such `Id` for this `DataCon`

dataConName :: DataCon -> Name #

The `Name` of the `DataCon`, giving it a unique, rooted identification

data StrictnessMark #

Constructors

MarkedStrict |
NotMarkedStrict |

#### Instances

Instances details

Binary StrictnessMark |
Instance details Defined in GHC.Core.DataCon Methods put_ :: BinHandle -> StrictnessMark -> IO () # put :: BinHandle -> StrictnessMark -> IO (Bin StrictnessMark) # get :: BinHandle -> IO StrictnessMark #
Outputable StrictnessMark |
Instance details Defined in GHC.Core.DataCon Methods ppr :: StrictnessMark -> SDoc #
Eq StrictnessMark |
Instance details Defined in GHC.Core.DataCon Methods (==) :: StrictnessMark -> StrictnessMark -> Bool # (/=) :: StrictnessMark -> StrictnessMark -> Bool #

data HsImplBang #

Haskell Implementation Bang

Bangs of data constructor arguments as generated by the compiler after consulting HsSrcBang, flags, etc.

Constructors

HsLazy | Lazy field, or one with an unlifted type
HsStrict Bool | Strict but not unpacked field True = we could have unpacked, but opted not to because of -O0. See Note [Detecting useless UNPACK pragmas]
HsUnpack (Maybe Coercion) | Strict and unpacked field co :: arg-ty ~ product-ty HsBang

#### Instances

Instances details

Data HsImplBang |

Instance details

Defined in GHC.Core.DataCon

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsImplBang -> c HsImplBang #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HsImplBang #

toConstr :: HsImplBang -> Constr #

dataTypeOf :: HsImplBang -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HsImplBang) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HsImplBang) #

gmapT :: (forall b. Data b => b -> b) -> HsImplBang -> HsImplBang #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsImplBang -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsImplBang -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsImplBang -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsImplBang -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsImplBang -> m HsImplBang #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsImplBang -> m HsImplBang #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsImplBang -> m HsImplBang #

Outputable HsImplBang |
Instance details Defined in GHC.Core.DataCon Methods ppr :: HsImplBang -> SDoc #

data HsSrcBang #

Haskell Source Bang

Bangs on data constructor arguments as the user wrote them in the source code.

`(HsSrcBang _ SrcUnpack SrcLazy)` and `(HsSrcBang _ SrcUnpack NoSrcStrict)` (without StrictData) makes no sense, we emit a warning (in checkValidDataCon) and treat it like `(HsSrcBang _ NoSrcUnpack SrcLazy)`

Constructors

HsSrcBang SourceText SrcUnpackedness SrcStrictness |

#### Instances

Instances details

Data HsSrcBang |

Instance details

Defined in GHC.Core.DataCon

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsSrcBang -> c HsSrcBang #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HsSrcBang #

toConstr :: HsSrcBang -> Constr #

dataTypeOf :: HsSrcBang -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HsSrcBang) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HsSrcBang) #

gmapT :: (forall b. Data b => b -> b) -> HsSrcBang -> HsSrcBang #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsSrcBang -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsSrcBang -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsSrcBang -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsSrcBang -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsSrcBang -> m HsSrcBang #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsSrcBang -> m HsSrcBang #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsSrcBang -> m HsSrcBang #

Outputable HsSrcBang |
Instance details Defined in GHC.Core.DataCon Methods ppr :: HsSrcBang -> SDoc #

type DataConEnv a = UniqFM DataCon a #

mkEqSpec :: TyVar -> Type -> EqSpec #

Make a non-dependent `EqSpec`

eqSpecTyVar :: EqSpec -> TyVar #

eqSpecType :: EqSpec -> Type #

eqSpecPair :: EqSpec -> (TyVar, Type) #

eqSpecPreds :: [EqSpec] -> ThetaType #

eqHsBang :: HsImplBang -> HsImplBang -> Bool #

Compare strictness annotations

isBanged :: HsImplBang -> Bool #

isSrcStrict :: SrcStrictness -> Bool #

isSrcUnpacked :: SrcUnpackedness -> Bool #

isMarkedStrict :: StrictnessMark -> Bool #

cbvFromStrictMark :: StrictnessMark -> CbvMark #

mkDataCon #

Arguments

:: Name |
-> Bool | Is the constructor declared infix?
-> TyConRepName | TyConRepName for the promoted TyCon
-> [HsSrcBang] | Strictness/unpack annotations, from user
-> [FieldLabel] | Field labels for the constructor, if it is a record, otherwise empty
-> [TyVar] | Universals.
-> [TyCoVar] | Existentials.
-> [InvisTVBinder] | User-written `TyVarBinder`s. These must be Inferred/Specified. See `Note [TyVarBinders in DataCons]`
-> [EqSpec] | GADT equalities
-> KnotTied ThetaType | Theta-type occurring before the arguments proper
-> [KnotTied (Scaled Type)] | Original argument types
-> KnotTied Type | Original result type
-> PromDataConInfo | See comments on `PromDataConInfo`
-> KnotTied TyCon | Representation type constructor
-> ConTag | Constructor tag
-> ThetaType | The "stupid theta", context of the data declaration e.g. `data Eq a => T a ...`
-> Id | Worker Id
-> DataConRep | Representation
-> DataCon |

Build a new data constructor

dataConTag :: DataCon -> ConTag #

The tag used for ordering `DataCon`s

dataConTagZ :: DataCon -> ConTagZ #

dataConOrigTyCon :: DataCon -> TyCon #

The original type constructor used in the definition of this data constructor. In case of a data family instance, that will be the family type constructor.

dataConRepType :: DataCon -> Type #

The representation type of the data constructor, i.e. the sort type that will represent values of this type at runtime

dataConIsInfix :: DataCon -> Bool #

Should the `DataCon` be presented infix?

dataConUnivTyVars :: DataCon -> [TyVar] #

The universally-quantified type variables of the constructor

dataConUnivAndExTyCoVars :: DataCon -> [TyCoVar] #

Both the universal and existential type/coercion variables of the constructor

dataConTheta :: DataCon -> ThetaType #

The *full* constraints on the constructor type, including dependent GADT equalities.

dataConWrapId_maybe :: DataCon -> Maybe Id #

Get the Id of the `DataCon` wrapper: a function that wraps the "actual" constructor so it has the type visible in the source program: c.f. `dataConWorkId`. Returns Nothing if there is no wrapper, which occurs for an algebraic data constructor and also for a newtype (whose constructor is inlined compulsorily)

dataConImplicitTyThings :: DataCon -> [TyThing] #

Find all the `Id`s implicitly brought into scope by the data constructor. Currently, the union of the `dataConWorkId` and the `dataConWrapId`

dataConFieldType :: DataCon -> FieldLabelString -> Type #

Extract the type for any given labelled field of the `DataCon`

dataConFieldType_maybe :: DataCon -> FieldLabelString -> Maybe (FieldLabel, Type) #

Extract the label and type for any given labelled field of the `DataCon`, or return `Nothing` if the field does not belong to it

dataConSrcBangs :: DataCon -> [HsSrcBang] #

Strictness/unpack annotations, from user; or, for imported DataCons, from the interface file The list is in one-to-one correspondence with the arity of the `DataCon`

dataConRepArity :: DataCon -> Arity #

Gives the number of value arguments (including zero-width coercions) stored by the given `DataCon`'s worker in its Core representation. This may differ from the number of arguments that appear in the source code; see also Note [DataCon arities]

isNullarySrcDataCon :: DataCon -> Bool #

Return whether there are any argument types for this `DataCon`s original source type See Note [DataCon arities]

isNullaryRepDataCon :: DataCon -> Bool #

Return whether this `DataCon`'s worker, in its Core representation, takes any value arguments.

In particular, remember that we include coercion arguments in the arity of the Core representation of the `DataCon` -- both lifted and unlifted coercions, despite the latter having zero-width runtime representation.

See also Note [DataCon arities].

dataConRepStrictness :: DataCon -> [StrictnessMark] #

Give the demands on the arguments of a Core constructor application (Con dc args)

dataConImplBangs :: DataCon -> [HsImplBang] #

dataConBoxer :: DataCon -> Maybe DataConBoxer #

dataConInstSig :: DataCon -> [Type] -> ([TyCoVar], ThetaType, [Type]) #

Instantiate the universal tyvars of a data con, returning ( instantiated existentials , instantiated constraints including dependent GADT equalities which are *also* listed in the instantiated existentials , instantiated args)

dataConOrigResTy :: DataCon -> Type #

dataConWrapperType :: DataCon -> Type #

The user-declared type of the data constructor in the nice-to-read form:

    T :: forall a b. a -> b -> T [a]

rather than:

    T :: forall a c. forall b. (c~[a]) => a -> b -> T c

The type variables are quantified in the order that the user wrote them. See `Note [DataCon user type variable binders]`.

NB: If the constructor is part of a data instance, the result type mentions the family tycon, not the internal one.

dataConNonlinearType :: DataCon -> Type #

dataConDisplayType :: Bool -> DataCon -> Type #

dataConInstArgTys #

Arguments

:: DataCon | A datacon with no existentials or equality constraints However, it can have a dcTheta (notably it can be a class dictionary, with superclasses)
-> [Type] | Instantiated at these types
-> [Scaled Type] |

Finds the instantiated types of the arguments required to construct a `DataCon` representation NB: these INCLUDE any dictionary args but EXCLUDE the data-declaration context, which is discarded It's all post-flattening etc; this is a representation type

dataConInstUnivs :: DataCon -> [Type] -> [Type] #

Given a data constructor `dc` with n universally quantified type variables `a_{1}`, `a_{2}`, ..., `a_{n}`, and given a list of argument types `dc_args` of length m where m <= n, then:

    dataConInstUnivs dc dc_args

Will return:

    [dc_arg_{1}, dc_arg_{2}, ..., dc_arg_{m}, a_{m+1}, ..., a_{n}]

That is, return the list of universal type variables with `a_{1}`, `a_{2}`, ..., `a_{m}` instantiated with `dc_arg_{1}`, `dc_arg_{2}`, ..., `dc_arg_{m}`. It is possible for `m` to be less than `n`, in which case the remaining `n - m` elements will simply be universal type variables (with their kinds possibly instantiated).

Examples:

- Given the data constructor `D :: forall a b. Foo a b` and `dc_args` `[Int, Bool]`, then `dataConInstUnivs D dc_args` will return `[Int, Bool]`.
- Given the data constructor `D :: forall a b. Foo a b` and `dc_args` `[Int]`, then @`dataConInstUnivs D dc_args` will return `[Int, b]`.
- Given the data constructor `E :: forall k (a :: k). Bar k a` and `dc_args` `[Type]`, then @`dataConInstUnivs D dc_args` will return `[Type, (a :: Type)]`.

This is primarily used in `GHC.Tc.Deriv.*` in service of instantiating data constructors' field types. See `Note [Instantiating field types in stock deriving]` for a notable example of this.

dataConOrigArgTys :: DataCon -> [Scaled Type] #

Returns the argument types of the wrapper, excluding all dictionary arguments and without substituting for any type variables

dataConOtherTheta :: DataCon -> ThetaType #

Returns constraints in the wrapper type, other than those in the dataConEqSpec

dataConRepArgTys :: DataCon -> [Scaled Type] #

Returns the arg types of the worker, including *all* non-dependent evidence, after any flattening has been done and without substituting for any type variables

dataConIdentity :: DataCon -> ByteString #

The string `package:module.name` identifying a constructor, which is attached to its info table and used by the GHCi debugger and the heap profiler

isTupleDataCon :: DataCon -> Bool #

isBoxedTupleDataCon :: DataCon -> Bool #

isUnboxedTupleDataCon :: DataCon -> Bool #

isVanillaDataCon :: DataCon -> Bool #

Vanilla `DataCon`s are those that are nice boring Haskell 98 constructors

isNewDataCon :: DataCon -> Bool #

Is this the `DataCon` of a newtype?

isCovertGadtDataCon :: DataCon -> Bool #

specialPromotedDc :: DataCon -> Bool #

Should this DataCon be allowed in a type even without -XDataKinds? Currently, only Lifted & Unlifted

classDataCon :: Class -> DataCon #

dataConCannotMatch :: [Type] -> DataCon -> Bool #

dataConResRepTyArgs :: DataCon -> [Type] #

Were the type variables of the data con written in a different order than the regular order (universal tyvars followed by existential tyvars)?

This is not a cheap test, so we minimize its use in GHC as much as possible. Currently, its only call site in the GHC codebase is in `mkDataConRep` in MkId, and so `dataConUserTyVarsNeedWrapper` is only called at most once during a data constructor's lifetime.

checkDataConTyVars :: DataCon -> Bool #

dataConUserTyVarsNeedWrapper :: DataCon -> Bool #

splitDataProductType_maybe #

Arguments

:: Type | A product type, perhaps
-> Maybe (TyCon, [Type], DataCon, [Scaled Type]) |

Extract the type constructor, type argument, data constructor and it's representation argument types from a type if it is a product type.

Precisely, we return `Just` for any data type that is all of:

- Concrete (i.e. constructors visible)
- Single-constructor
- ... which has no existentials

Whether the type is a `data` type or a `newtype`.

data FamInstMatch #

Constructors

FamInstMatch |

Fields

- fim_instance :: FamInst
- fim_tys :: [Type]
- fim_cos :: [Coercion]

#### Instances

Instances details

Outputable FamInstMatch |
Instance details Defined in GHC.Core.FamInstEnv Methods ppr :: FamInstMatch -> SDoc #

data InjectivityCheckResult #

Result of testing two type family equations for injectiviy.

Constructors

InjectivityAccepted | Either RHSs are distinct or unification of RHSs leads to unification of LHSs
InjectivityUnified CoAxBranch CoAxBranch | RHSs unify but LHSs don't unify under that substitution. Relevant for closed type families where equation after unification might be overlapped (in which case it is OK if they don't unify). Constructor stores axioms after unification.

data FamInstEnv #

#### Instances

Instances details

Outputable FamInstEnv |
Instance details Defined in GHC.Core.FamInstEnv Methods ppr :: FamInstEnv -> SDoc #

type FamInstEnvs = (FamInstEnv, FamInstEnv) #

data FamFlavor #

Constructors

SynFamilyInst |
DataFamilyInst TyCon |

data FamInst #

Constructors

FamInst |

Fields

- fi_axiom :: CoAxiom Unbranched
- fi_flavor :: FamFlavor
- fi_fam :: Name
- fi_tcs :: [RoughMatchTc]
- fi_tvs :: [TyVar]
- fi_cvs :: [CoVar]
- fi_tys :: [Type]
- fi_rhs :: Type
- fi_orphan :: IsOrphan

#### Instances

Instances details

NamedThing FamInst |
Instance details Defined in GHC.Core.FamInstEnv Methods getOccName :: FamInst -> OccName # getName :: FamInst -> Name #
Outputable FamInst |
Instance details Defined in GHC.Core.FamInstEnv Methods ppr :: FamInst -> SDoc #

famInstAxiom :: FamInst -> CoAxiom Unbranched #

famInstRHS :: FamInst -> Type #

famInstTyCon :: FamInst -> TyCon #

famInstsRepTyCons :: [FamInst] -> [TyCon] #

famInstRepTyCon_maybe :: FamInst -> Maybe TyCon #

dataFamInstRepTyCon :: FamInst -> TyCon #

orphNamesOfFamInst :: FamInst -> NameSet #

pprFamInsts :: [FamInst] -> SDoc #

mkLocalFamInst :: FamFlavor -> CoAxiom Unbranched -> [TyVar] -> [CoVar] -> [Type] -> Type -> FamInst #

mkImportedFamInst :: Name -> [RoughMatchTc] -> CoAxiom Unbranched -> IsOrphan -> FamInst #

famInstEnvSize :: FamInstEnv -> Int #

emptyFamInstEnvs :: (FamInstEnv, FamInstEnv) #

Create a `FamInstEnv` from `Name` indices. INVARIANTS: * The fs_tvs are distinct in each FamInst of a range value of the map (so we can safely unify them)

emptyFamInstEnv :: FamInstEnv #

famInstEnvElts :: FamInstEnv -> [FamInst] #

familyInstances :: (FamInstEnv, FamInstEnv) -> TyCon -> [FamInst] #

familyNameInstances :: (FamInstEnv, FamInstEnv) -> Name -> [FamInst] #

unionFamInstEnv :: FamInstEnv -> FamInstEnv -> FamInstEnv #

Makes no particular effort to detect conflicts.

extendFamInstEnvList :: FamInstEnv -> [FamInst] -> FamInstEnv #

extendFamInstEnv :: FamInstEnv -> FamInst -> FamInstEnv #

compatibleBranches :: CoAxBranch -> CoAxBranch -> Bool #

injectiveBranches :: [Bool] -> CoAxBranch -> CoAxBranch -> InjectivityCheckResult #

Check whether two type family axioms don't violate injectivity annotation.

mkCoAxBranch :: [TyVar] -> [TyVar] -> [CoVar] -> [Type] -> Type -> [Role] -> SrcSpan -> CoAxBranch #

mkBranchedCoAxiom :: Name -> TyCon -> [CoAxBranch] -> CoAxiom Branched #

mkUnbranchedCoAxiom :: Name -> TyCon -> CoAxBranch -> CoAxiom Unbranched #

mkSingleCoAxiom :: Role -> Name -> [TyVar] -> [TyVar] -> [CoVar] -> TyCon -> [Type] -> Type -> CoAxiom Unbranched #

mkNewTypeCoAxiom :: Name -> TyCon -> [TyVar] -> [Role] -> Type -> CoAxiom Unbranched #

Create a coercion constructor (axiom) suitable for the given newtype `TyCon`. The `Name` should be that of a new coercion `CoAxiom`, the `TyVar`s the arguments expected by the `newtype` and the type the appropriate right hand side of the `newtype`, with the free variables a subset of those `TyVar`s.

lookupFamInstEnvByTyCon :: FamInstEnvs -> TyCon -> [FamInst] #

lookupFamInstEnv :: FamInstEnvs -> TyCon -> [Type] -> [FamInstMatch] #

lookupFamInstEnvConflicts :: FamInstEnvs -> FamInst -> [FamInst] #

lookupFamInstEnvInjectivityConflicts :: [Bool] -> FamInstEnvs -> FamInst -> [CoAxBranch] #

Check whether an open type family equation can be added to already existing instance environment without causing conflicts with supplied injectivity annotations. Returns list of conflicting axioms (type instance declarations).

isDominatedBy :: CoAxBranch -> [CoAxBranch] -> Bool #

reduceTyFamApp_maybe :: FamInstEnvs -> Role -> TyCon -> [Type] -> Maybe Reduction #

apartnessCheck #

Arguments

:: [Type] | flattened target arguments. Make sure they're flattened! See Note [Flattening type-family applications when matching instances] in GHC.Core.Unify.
-> CoAxBranch | the candidate equation we wish to use Precondition: this matches the target
-> Bool | True = equation can fire

Do an apartness check, as described in the "Closed Type Families" paper (POPL '14). This should be used when determining if an equation (`CoAxBranch`) of a closed type family can be used to reduce a certain target type family application.

topNormaliseType :: FamInstEnvs -> Type -> Type #

topNormaliseType_maybe :: FamInstEnvs -> Type -> Maybe Reduction #

Get rid of *outermost* (or toplevel) * type function redex * data family redex * newtypes returning an appropriate Representational coercion. Specifically, if topNormaliseType_maybe env ty = Just (co, ty') then (a) co :: ty ~R ty' (b) ty' is not a newtype, and is not a type-family or data-family redex

However, ty' can be something like (Maybe (F ty)), where (F ty) is a redex.

Always operates homogeneously: the returned type has the same kind as the original type, and the returned coercion is always homogeneous.

topReduceTyFamApp_maybe :: FamInstEnvs -> TyCon -> [Type] -> Maybe HetReduction #

Try to simplify a type-family application, by *one* step If topReduceTyFamApp_maybe env r F tys = Just (HetReduction (Reduction co rhs) res_co) then co :: F tys ~R# rhs res_co :: typeKind(F tys) ~ typeKind(rhs) Type families and data families; always Representational role

normaliseType :: FamInstEnvs -> Role -> Type -> Reduction #

normaliseTcApp :: FamInstEnvs -> Role -> TyCon -> [Type] -> Reduction #

module GHC.Core.InstEnv

module GHC.Types.Unique.FM

module GHC.Core.PatSyn

module GHC.Core.Predicate

module GHC.Core.TyCon

module GHC.Core.TyCo.Ppr

module GHC.Core.Type

module GHC.Core.Unify

module GHC.Core.Utils

module GHC.HsToCore.Docs

module GHC.HsToCore.Expr

module GHC.HsToCore.Monad

module GHC.Iface.Syntax

module GHC.Iface.Recomp

data DerivStrategy pass #

Which technique the user explicitly requested when deriving an instance.

Constructors

StockStrategy (XStockStrategy pass) | GHC's "standard" strategy, which is to implement a custom instance for the data type. This only works for certain types that GHC knows about (e.g., `Eq`, `Show`, `Functor` when `-XDeriveFunctor` is enabled, etc.)

AnyclassStrategy (XAnyClassStrategy pass)

    -XDeriveAnyClass

NewtypeStrategy (XNewtypeStrategy pass)

    -XGeneralizedNewtypeDeriving

ViaStrategy (XViaStrategy pass)

    -XDerivingVia

#### Instances

Instances details

ToHie (RScoped (LocatedAn NoEpAnns (DerivStrategy GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (DerivStrategy GhcRn)) -> HieM [HieAST Type]
type Anno (DerivStrategy (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DerivStrategy (GhcPass p)) = SrcAnn NoEpAnns

data InjectivityAnn pass #

If the user supplied an injectivity annotation it is represented using InjectivityAnn. At the moment this is a single injectivity condition - see Note [Injectivity annotation]. `Located name` stores the LHS of injectivity condition. `[Located name]` stores the RHS of injectivity condition. Example:

type family Foo a b c = r | r -> a c where ...

This will be represented as "InjectivityAnn `r` [`a`, `c`]"

Constructors

InjectivityAnn (XCInjectivityAnn pass) (LIdP pass) [LIdP pass]

- `AnnKeywordId` : `AnnRarrow`, `AnnVbar`

XInjectivityAnn !(XXInjectivityAnn pass) |

#### Instances

Instances details

ToHie (LocatedAn NoEpAnns (InjectivityAnn GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (InjectivityAnn GhcRn) -> HieM [HieAST Type]
type Anno (InjectivityAnn (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (InjectivityAnn (GhcPass p)) = SrcAnn NoEpAnns

data RuleBndr pass #

Rule Binder

Constructors

RuleBndr (XCRuleBndr pass) (LIdP pass) |
RuleBndrSig (XRuleBndrSig pass) (LIdP pass) (HsPatSigType pass) |

XRuleBndr !(XXRuleBndr pass)

- `AnnKeywordId` : `AnnOpen`, `AnnDcolon`,`AnnClose`

#### Instances

Instances details

ToHie (RScoped (LocatedAn NoEpAnns (RuleBndr GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (RuleBndr GhcRn)) -> HieM [HieAST Type]
type Anno (RuleBndr (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RuleBndr (GhcPass p)) = SrcAnn NoEpAnns

data WarnDecl pass #

Warning pragma Declaration

Constructors

Warning (XWarning pass) [LIdP pass] (WarningTxt pass) |
XWarnDecl !(XXWarnDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (WarnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecl GhcRn) -> HieM [HieAST Type]
type Anno (WarnDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (WarnDecl (GhcPass p)) = SrcSpanAnnA

data AnnDecl pass #

Annotation Declaration

Constructors

HsAnnotation (XHsAnnotation pass) (AnnProvenance pass) (XRec pass (HsExpr pass))

- `AnnKeywordId` : `AnnOpen`, `AnnType` `AnnModule` `AnnClose`

XAnnDecl !(XXAnnDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (AnnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (AnnDecl GhcRn) -> HieM [HieAST Type]
type Anno (AnnDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (AnnDecl (GhcPass p)) = SrcSpanAnnA

data ForeignExport pass #

Constructors

CExport (XCExport pass) (XRec pass CExportSpec) |
XForeignExport !(XXForeignExport pass) |

#### Instances

Instances details

ToHie (ForeignExport GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: ForeignExport GhcRn -> HieM [HieAST Type]

data ForeignImport pass #

Constructors

CImport (XCImport pass) (XRec pass CCallConv) (XRec pass Safety) (Maybe Header) CImportSpec |
XForeignImport !(XXForeignImport pass) |

#### Instances

Instances details

ToHie (ForeignImport GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: ForeignImport GhcRn -> HieM [HieAST Type]

data SpliceDecl p #

Splice Declaration

Constructors

SpliceDecl (XSpliceDecl p) (XRec p (HsUntypedSplice p)) SpliceDecoration |
XSpliceDecl !(XXSpliceDecl p) |

#### Instances

Instances details

ToHie (LocatedA (SpliceDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (SpliceDecl GhcRn) -> HieM [HieAST Type]
type Anno (SpliceDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (SpliceDecl (GhcPass p)) = SrcSpanAnnA

data StandaloneKindSig pass #

Constructors

StandaloneKindSig (XStandaloneKindSig pass) (LIdP pass) (LHsSigType pass) |
XStandaloneKindSig !(XXStandaloneKindSig pass) |

#### Instances

Instances details

ToHie (LocatedA (StandaloneKindSig GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (StandaloneKindSig GhcRn) -> HieM [HieAST Type]
ToHie (StandaloneKindSig GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: StandaloneKindSig GhcRn -> HieM [HieAST Type]
type Anno (StandaloneKindSig (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (StandaloneKindSig (GhcPass p)) = SrcSpanAnnA

data CImportSpec #

Constructors

CLabel CLabelString |
CFunction CCallTarget |
CWrapper |

#### Instances

Instances details

Data CImportSpec |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CImportSpec -> c CImportSpec #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CImportSpec #

toConstr :: CImportSpec -> Constr #

dataTypeOf :: CImportSpec -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CImportSpec) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CImportSpec) #

gmapT :: (forall b. Data b => b -> b) -> CImportSpec -> CImportSpec #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CImportSpec -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CImportSpec -> r #

gmapQ :: (forall d. Data d => d -> u) -> CImportSpec -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CImportSpec -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CImportSpec -> m CImportSpec #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CImportSpec -> m CImportSpec #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CImportSpec -> m CImportSpec #

data WarnDecls pass #

Warning pragma Declarations

Constructors

Warnings |

Fields

- wd_ext :: XWarnings pass
- wd_warnings :: [LWarnDecl pass]

XWarnDecls !(XXWarnDecls pass) |

#### Instances

Instances details

ToHie (LocatedA (WarnDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecls GhcRn) -> HieM [HieAST Type]
type Anno (WarnDecls (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (WarnDecls (GhcPass p)) = SrcSpanAnnA

data RoleAnnotDecl pass #

Role Annotation Declaration

Constructors

RoleAnnotDecl (XCRoleAnnotDecl pass) (LIdP pass) [XRec pass (Maybe Role)]

- `AnnKeywordId` : `AnnType`, `AnnRole`

XRoleAnnotDecl !(XXRoleAnnotDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (RoleAnnotDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RoleAnnotDecl GhcRn) -> HieM [HieAST Type]
type Anno (RoleAnnotDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RoleAnnotDecl (GhcPass p)) = SrcSpanAnnA

type LRoleAnnotDecl pass = XRec pass (RoleAnnotDecl pass) #

Located Role Annotation Declaration

data AnnProvenance pass #

Annotation Provenance

Constructors

ValueAnnProvenance (LIdP pass) |
TypeAnnProvenance (LIdP pass) |
ModuleAnnProvenance |

#### Instances

Instances details

ToHie (AnnProvenance GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: AnnProvenance GhcRn -> HieM [HieAST Type]

type LAnnDecl pass = XRec pass (AnnDecl pass) #

Located Annotation Declaration

type LWarnDecl pass = XRec pass (WarnDecl pass) #

Located Warning pragma Declaration

type LWarnDecls pass = XRec pass (WarnDecls pass) #

Located Warning Declarations

data DocDecl pass #

Documentation comment Declaration

Constructors

DocCommentNext (LHsDoc pass) |
DocCommentPrev (LHsDoc pass) |
DocCommentNamed String (LHsDoc pass) |
DocGroup Int (LHsDoc pass) |

#### Instances

Instances details

(Data pass, Data (IdP pass)) => Data (DocDecl pass) |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DocDecl pass -> c (DocDecl pass) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (DocDecl pass) #

toConstr :: DocDecl pass -> Constr #

dataTypeOf :: DocDecl pass -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (DocDecl pass)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (DocDecl pass)) #

gmapT :: (forall b. Data b => b -> b) -> DocDecl pass -> DocDecl pass #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DocDecl pass -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DocDecl pass -> r #

gmapQ :: (forall d. Data d => d -> u) -> DocDecl pass -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> DocDecl pass -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DocDecl pass -> m (DocDecl pass) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DocDecl pass -> m (DocDecl pass) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DocDecl pass -> m (DocDecl pass) #

ToHie (LocatedA (DocDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DocDecl GhcRn) -> HieM [HieAST Type]
type Anno (DocDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DocDecl (GhcPass p)) = SrcSpanAnnA

type LDocDecl pass = XRec pass (DocDecl pass) #

Located Documentation comment Declaration

type LRuleBndr pass = XRec pass (RuleBndr pass) #

Located Rule Binder

data RuleDecl pass #

Rule Declaration

Constructors

HsRule |

Fields

- rd_ext :: XHsRule pass

  After renamer, free-vars from the LHS and RHS

- rd_name :: XRec pass RuleName

  Note [Pragma source text] in GHC.Types.SourceText

- rd_act :: Activation
- rd_tyvs :: Maybe [LHsTyVarBndr () (NoGhcTc pass)]

  Forall'd type vars

- rd_tmvs :: [LRuleBndr pass]

  Forall'd term vars, before typechecking; after typechecking this includes all forall'd vars

- rd_lhs :: XRec pass (HsExpr pass)
- rd_rhs :: XRec pass (HsExpr pass)
  - `AnnKeywordId` : `AnnOpen`,`AnnTilde`, `AnnVal`, `AnnClose`, `AnnForall`,`AnnDot`, `AnnEqual`,

XRuleDecl !(XXRuleDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (RuleDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecl GhcRn) -> HieM [HieAST Type]
type Anno (RuleDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RuleDecl (GhcPass p)) = SrcSpanAnnA

type LRuleDecl pass = XRec pass (RuleDecl pass) #

Located Rule Declaration

data RuleDecls pass #

Rule Declarations

Constructors

HsRules |

Fields

- rds_ext :: XCRuleDecls pass
- rds_rules :: [LRuleDecl pass]

XRuleDecls !(XXRuleDecls pass) |

#### Instances

Instances details

ToHie (LocatedA (RuleDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecls GhcRn) -> HieM [HieAST Type]
type Anno (RuleDecls (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RuleDecls (GhcPass p)) = SrcSpanAnnA

type LRuleDecls pass = XRec pass (RuleDecls pass) #

Located Rule Declarations

data ForeignDecl pass #

Foreign Declaration

Constructors

ForeignImport |

Fields

- fd_i_ext :: XForeignImport pass
- fd_name :: LIdP pass
- fd_sig_ty :: LHsSigType pass
- fd_fi :: ForeignImport pass

ForeignExport

- `AnnKeywordId` : `AnnForeign`, `AnnImport`,`AnnExport`, `AnnDcolon`

Fields

- fd_e_ext :: XForeignExport pass
- fd_name :: LIdP pass
- fd_sig_ty :: LHsSigType pass
- fd_fe :: ForeignExport pass

XForeignDecl !(XXForeignDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (ForeignDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ForeignDecl GhcRn) -> HieM [HieAST Type]
type Anno (ForeignDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (ForeignDecl (GhcPass p)) = SrcSpanAnnA

type LForeignDecl pass = XRec pass (ForeignDecl pass) #

Located Foreign Declaration

data DefaultDecl pass #

Default Declaration

Constructors

DefaultDecl (XCDefaultDecl pass) [LHsType pass]

- `AnnKeywordId`s : `AnnDefault`, `AnnOpen`,`AnnClose`

XDefaultDecl !(XXDefaultDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (DefaultDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DefaultDecl GhcRn) -> HieM [HieAST Type]
type Anno (DefaultDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DefaultDecl (GhcPass p)) = SrcSpanAnnA

type LDefaultDecl pass = XRec pass (DefaultDecl pass) #

Located Default Declaration

type LDerivStrategy pass = XRec pass (DerivStrategy pass) #

A `Located` `DerivStrategy`.

data DerivDecl pass #

Stand-alone 'deriving instance' declaration

Constructors

DerivDecl |

Fields

- deriv_ext :: XCDerivDecl pass
- deriv_type :: LHsSigWcType pass

  The instance type to derive.

  It uses an `LHsSigWcType` because the context is allowed to be a single wildcard:

      deriving instance _ => Eq (Foo a)

  Which signifies that the context should be inferred.

- deriv_strategy :: Maybe (LDerivStrategy pass)
- deriv_overlap_mode :: Maybe (XRec pass OverlapMode)
  - `AnnKeywordId` : `AnnDeriving`, `AnnInstance`, `AnnStock`, `AnnAnyClass`, `AnnNewtype`, `AnnOpen`,`AnnClose`

XDerivDecl !(XXDerivDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (DerivDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DerivDecl GhcRn) -> HieM [HieAST Type]
type Anno (DerivDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DerivDecl (GhcPass p)) = SrcSpanAnnA

type LDerivDecl pass = XRec pass (DerivDecl pass) #

Located stand-alone 'deriving instance' declaration

data InstDecl pass #

Instance Declaration

Constructors

ClsInstD |

Fields

- cid_d_ext :: XClsInstD pass
- cid_inst :: ClsInstDecl pass

DataFamInstD |

Fields

- dfid_ext :: XDataFamInstD pass
- dfid_inst :: DataFamInstDecl pass

TyFamInstD |

Fields

- tfid_ext :: XTyFamInstD pass
- tfid_inst :: TyFamInstDecl pass

XInstDecl !(XXInstDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (InstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (InstDecl GhcRn) -> HieM [HieAST Type]
type Anno (InstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (InstDecl (GhcPass p)) = SrcSpanAnnA

type LInstDecl pass = XRec pass (InstDecl pass) #

Located Instance Declaration

data ClsInstDecl pass #

Class Instance Declaration - `AnnKeywordId` : `AnnInstance`, `AnnWhere`, `AnnOpen`,`AnnClose`, For details on above see Note [exact print annotations] in GHC.Parser.Annotation

Constructors

ClsInstDecl |

Fields

- cid_ext :: XCClsInstDecl pass
- cid_poly_ty :: LHsSigType pass
- cid_binds :: LHsBinds pass
- cid_sigs :: [LSig pass]
- cid_tyfam_insts :: [LTyFamInstDecl pass]
- cid_datafam_insts :: [LDataFamInstDecl pass]
- cid_overlap_mode :: Maybe (XRec pass OverlapMode)
  - `AnnKeywordId` : `AnnOpen`, `AnnClose`,

XClsInstDecl !(XXClsInstDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (ClsInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ClsInstDecl GhcRn) -> HieM [HieAST Type]
type Anno (ClsInstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (ClsInstDecl (GhcPass p)) = SrcSpanAnnA

type LClsInstDecl pass = XRec pass (ClsInstDecl pass) #

Located Class Instance Declaration

data FamEqn pass rhs #

Family Equation

One equation in a type family instance declaration, data family instance declaration, or type family default. See Note [Type family instance declarations in HsSyn] See Note [Family instance declaration binders]

Constructors

FamEqn |

Fields

- feqn_ext :: XCFamEqn pass rhs
- feqn_tycon :: LIdP pass
- feqn_bndrs :: HsOuterFamEqnTyVarBndrs pass

  Optional quantified type vars

- feqn_pats :: HsTyPats pass
- feqn_fixity :: LexicalFixity

  Fixity used in the declaration

- feqn_rhs :: rhs
  - `AnnKeywordId` : `AnnEqual`

XFamEqn !(XXFamEqn pass rhs) |

#### Instances

Instances details

ToHie (TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (FamEqn GhcRn (HsDataDefn GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (HsDataDefn GhcRn)) -> HieM [HieAST Type]
(HasLoc a, HiePass p) => HasLoc (FamEqn (GhcPass p) a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: FamEqn (GhcPass p) a -> SrcSpan
(ToHie rhs, HasLoc rhs) => ToHie (FamEqn GhcRn rhs) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: FamEqn GhcRn rhs -> HieM [HieAST Type]
type Anno (FamEqn (GhcPass p) _1) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn (GhcPass p) _1) = SrcSpanAnnA
type Anno (FamEqn (GhcPass p) _1) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn (GhcPass p) _1) = SrcSpanAnnA
type Anno (FamEqn p (LocatedA (HsType p))) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn p (LocatedA (HsType p))) = SrcSpanAnnA

newtype DataFamInstDecl pass #

Data Family Instance Declaration

Constructors

DataFamInstDecl

- `AnnKeywordId` : `AnnData`, `AnnNewType`,`AnnInstance`, `AnnDcolon` `AnnWhere`,`AnnOpen`, `AnnClose`

Fields

- dfid_eqn :: FamEqn pass (HsDataDefn pass)

#### Instances

Instances details

ToHie (LocatedA (DataFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DataFamInstDecl GhcRn) -> HieM [HieAST Type]
type Anno (DataFamInstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DataFamInstDecl (GhcPass p)) = SrcSpanAnnA

type LDataFamInstDecl pass = XRec pass (DataFamInstDecl pass) #

Located Data Family Instance Declaration

data TyFamInstDecl pass #

Type Family Instance Declaration

Constructors

TyFamInstDecl

- `AnnKeywordId` : `AnnType`, `AnnInstance`,

Fields

- tfid_xtn :: XCTyFamInstDecl pass
- tfid_eqn :: TyFamInstEqn pass

XTyFamInstDecl !(XXTyFamInstDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (TyFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyFamInstDecl GhcRn) -> HieM [HieAST Type]
type Anno (TyFamInstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (TyFamInstDecl (GhcPass p)) = SrcSpanAnnA

type LTyFamInstDecl pass = XRec pass (TyFamInstDecl pass) #

Located Type Family Instance Declaration

type LTyFamDefltDecl pass = XRec pass (TyFamDefltDecl pass) #

Located type family default declarations.

type TyFamDefltDecl = TyFamInstDecl #

Type family default declarations. A convenient synonym for `TyFamInstDecl`. See `Note [Type family instance declarations in HsSyn]`.

type TyFamInstEqn pass = FamEqn pass (LHsType pass) #

Type Family Instance Equation

type HsTyPats pass = [LHsTypeArg pass] #

Haskell Type Patterns

type LTyFamInstEqn pass #

Arguments

= XRec pass (TyFamInstEqn pass) | May have `AnnKeywordId` : `AnnSemi` when in a list

Located Type Family Instance Equation

data HsConDeclGADTDetails pass #

The arguments in a GADT constructor. Unlike Haskell98-style constructors, GADT constructors cannot be declared with infix syntax. As a result, we do not use `HsConDetails` here, as `InfixCon` would be an unrepresentable state. (There is a notion of infix GADT constructors for the purposes of derived Show instances—see Note [Infix GADT constructors] in GHC.Tc.TyCl—but that is an orthogonal concern.)

Constructors

PrefixConGADT [HsScaled pass (LBangType pass)] |
RecConGADT (XRec pass [LConDeclField pass]) (LHsUniToken "->" "\8594" pass) |

#### Instances

Instances details

ToHie (HsConDeclGADTDetails GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsConDeclGADTDetails GhcRn -> HieM [HieAST Type]

type HsConDeclH98Details pass = HsConDetails Void (HsScaled pass (LBangType pass)) (XRec pass [LConDeclField pass]) #

The arguments in a Haskell98-style data constructor.

data ConDecl pass #

    data T b = forall a. Eq a => MkT a b
      MkT :: forall b a. Eq a => MkT a b

    data T b where
         MkT1 :: Int -> T Int

    data T = Int MkT Int
           | MkT2

    data T a where
         Int MkT Int :: T Int

- `AnnKeywordId`s : `AnnOpen`, `AnnDotdot`,`AnnCLose`, `AnnEqual`,`AnnVbar`, `AnnDarrow`,`AnnDarrow`, `AnnForall`,`AnnDot`

data Constructor Declaration

Constructors

ConDeclGADT |

Fields

- con_g_ext :: XConDeclGADT pass
- con_names :: NonEmpty (LIdP pass)
- con_dcolon :: !(LHsUniToken "::" "\8759" pass)
- con_bndrs :: XRec pass (HsOuterSigTyVarBndrs pass)

  The outermost type variable binders, be they explicit or implicit. The `XRec` is used to anchor exact print annotations, AnnForall and AnnDot.

- con_mb_cxt :: Maybe (LHsContext pass)

  User-written context (if any)

- con_g_args :: HsConDeclGADTDetails pass

  Arguments; never infix

- con_res_ty :: LHsType pass

  Result type

- con_doc :: Maybe (LHsDoc pass)

  A possible Haddock comment.

ConDeclH98 |

Fields

- con_ext :: XConDeclH98 pass
- con_name :: LIdP pass
- con_forall :: Bool

  True = explicit user-written forall e.g. data T a = forall b. MkT b (b->a) con_ex_tvs = {b} False => con_ex_tvs is empty

- con_ex_tvs :: [LHsTyVarBndr Specificity pass]

  Existentials only

- con_mb_cxt :: Maybe (LHsContext pass)

  User-written context (if any)

- con_args :: HsConDeclH98Details pass

  Arguments; can be infix

- con_doc :: Maybe (LHsDoc pass)

  A possible Haddock comment.

XConDecl !(XXConDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (ConDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ConDecl GhcRn) -> HieM [HieAST Type]
HasHaddock (LocatedA (ConDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (ConDecl GhcPs) -> HdkA (LocatedA (ConDecl GhcPs))
type Anno (ConDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (ConDecl (GhcPass p)) = SrcSpanAnnA

type LConDecl pass #

Arguments

= XRec pass (ConDecl pass) | May have `AnnKeywordId` : `AnnSemi` when in a GADT constructor list

Located data Constructor Declaration

data NewOrData #

When we only care whether a data-type declaration is `data` or `newtype`, but not what constructors it has

#### Instances

Instances details

Data NewOrData |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NewOrData -> c NewOrData #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NewOrData #

toConstr :: NewOrData -> Constr #

dataTypeOf :: NewOrData -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NewOrData) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NewOrData) #

gmapT :: (forall b. Data b => b -> b) -> NewOrData -> NewOrData #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NewOrData -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NewOrData -> r #

gmapQ :: (forall d. Data d => d -> u) -> NewOrData -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> NewOrData -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> NewOrData -> m NewOrData #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NewOrData -> m NewOrData #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NewOrData -> m NewOrData #

Eq NewOrData |
Instance details Defined in Language.Haskell.Syntax.Decls Methods (==) :: NewOrData -> NewOrData -> Bool # (/=) :: NewOrData -> NewOrData -> Bool #

type LStandaloneKindSig pass = XRec pass (StandaloneKindSig pass) #

Located Standalone Kind Signature

data DerivClauseTys pass #

The types mentioned in a single `deriving` clause. This can come in two forms, `DctSingle` or `DctMulti`, depending on whether the types are surrounded by enclosing parentheses or not. These parentheses are semantically different than `HsParTy`. For example, `deriving ()` means "derive zero classes" rather than "derive an instance of the 0-tuple".

`DerivClauseTys` use `LHsSigType` because `deriving` clauses can mention type variables that aren't bound by the datatype, e.g.

    data T b = ... deriving (C [a])

should produce a derived instance for `C [a] (T b)`.

Constructors

DctSingle (XDctSingle pass) (LHsSigType pass) | A `deriving` clause with a single type. Moreover, that type can only be a type constructor without any arguments. Example: `deriving Eq`
DctMulti (XDctMulti pass) [LHsSigType pass] | A `deriving` clause with a comma-separated list of types, surrounded by enclosing parentheses. Example: `deriving (Eq, C a)`
XDerivClauseTys !(XXDerivClauseTys pass) |

#### Instances

Instances details

ToHie (LocatedC (DerivClauseTys GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedC (DerivClauseTys GhcRn) -> HieM [HieAST Type]
HasHaddock (LocatedC (DerivClauseTys GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedC (DerivClauseTys GhcPs) -> HdkA (LocatedC (DerivClauseTys GhcPs))
type Anno (DerivClauseTys (GhcPass _1)) |
Instance details Defined in GHC.Hs.Decls type Anno (DerivClauseTys (GhcPass _1)) = SrcSpanAnnC

type LDerivClauseTys pass = XRec pass (DerivClauseTys pass) #

data HsDerivingClause pass #

A single `deriving` clause of a data declaration.

- `AnnKeywordId` : `AnnDeriving`, `AnnStock`, `AnnAnyClass`, `AnnNewtype`, `AnnOpen`,`AnnClose`

Constructors

HsDerivingClause |

Fields

- deriv_clause_ext :: XCHsDerivingClause pass
- deriv_clause_strategy :: Maybe (LDerivStrategy pass)

  The user-specified strategy (if any) to use when deriving `deriv_clause_tys`.

- deriv_clause_tys :: LDerivClauseTys pass

  The types to derive.

XHsDerivingClause !(XXHsDerivingClause pass) |

#### Instances

Instances details

ToHie (Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)] -> HieM [HieAST Type]
HasHaddock (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)]) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)] -> HdkA (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)])
ToHie (LocatedAn NoEpAnns (HsDerivingClause GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (HsDerivingClause GhcRn) -> HieM [HieAST Type]
HasHaddock (LocatedAn NoEpAnns (HsDerivingClause GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedAn NoEpAnns (HsDerivingClause GhcPs) -> HdkA (LocatedAn NoEpAnns (HsDerivingClause GhcPs))
type Anno (HsDerivingClause (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (HsDerivingClause (GhcPass p)) = SrcAnn NoEpAnns

type LHsDerivingClause pass = XRec pass (HsDerivingClause pass) #

type HsDeriving pass #

Arguments

= [LHsDerivingClause pass] | The optional `deriving` clauses of a data declaration. Clauses is plural because one can specify multiple deriving clauses using the `-XDerivingStrategies` language extension. The list of `LHsDerivingClause`s corresponds to exactly what the user requested to derive, in order. If no deriving clauses were specified, the list is empty.

Haskell Deriving clause

data HsDataDefn pass #

Haskell Data type Definition

Constructors

HsDataDefn | Declares a data type or newtype, giving its constructors `data/newtype T a = constrs data/newtype instance T [a] = constrs`

Fields

- dd_ext :: XCHsDataDefn pass
- dd_ctxt :: Maybe (LHsContext pass)

  Context

- dd_cType :: Maybe (XRec pass CType)
- dd_kindSig :: Maybe (LHsKind pass)

  Optional kind signature.

  `(Just k)` for a GADT-style `data`, or `data instance` decl, with explicit kind sig

  Always `Nothing` for H98-syntax decls

- dd_cons :: DataDefnCons (LConDecl pass)

  Data constructors

  For `data T a = T1 | T2 a` the `LConDecl`s all have `ConDeclH98`. For `data T a where { T1 :: T a }` the `LConDecls` all have `ConDeclGADT`.

- dd_derivs :: HsDeriving pass

  Optional 'deriving' clause

XHsDataDefn !(XXHsDataDefn pass) |

#### Instances

Instances details

HasLoc (HsDataDefn GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: HsDataDefn GhcRn -> SrcSpan
ToHie (TScoped (FamEqn GhcRn (HsDataDefn GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (HsDataDefn GhcRn)) -> HieM [HieAST Type]
ToHie (HsDataDefn GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsDataDefn GhcRn -> HieM [HieAST Type]
HasHaddock (HsDataDefn GhcPs) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: HsDataDefn GhcPs -> HdkA (HsDataDefn GhcPs)

data FamilyInfo pass #

Constructors

DataFamily |
OpenTypeFamily |
ClosedTypeFamily (Maybe [LTyFamInstEqn pass]) | `Nothing` if we're in an hs-boot file and the user said "type family Foo x where .."

#### Instances

Instances details

ToHie (FamilyInfo GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: FamilyInfo GhcRn -> HieM [HieAST Type]

type LInjectivityAnn pass = XRec pass (InjectivityAnn pass) #

Located Injectivity Annotation

data FamilyDecl pass #

type Family Declaration

Constructors

FamilyDecl |

Fields

- fdExt :: XCFamilyDecl pass
- fdInfo :: FamilyInfo pass
- fdTopLevel :: TopLevelFlag
- fdLName :: LIdP pass
- fdTyVars :: LHsQTyVars pass
- fdFixity :: LexicalFixity
- fdResultSig :: LFamilyResultSig pass
- fdInjectivityAnn :: Maybe (LInjectivityAnn pass)

XFamilyDecl !(XXFamilyDecl pass)

- `AnnKeywordId` : `AnnType`, `AnnData`, `AnnFamily`, `AnnWhere`, `AnnOpenP`, `AnnDcolon`, `AnnCloseP`, `AnnEqual`, `AnnRarrow`, `AnnVbar`

#### Instances

Instances details

ToHie (LocatedA (FamilyDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FamilyDecl GhcRn) -> HieM [HieAST Type]
type Anno (FamilyDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (FamilyDecl (GhcPass p)) = SrcSpanAnnA

type LFamilyDecl pass = XRec pass (FamilyDecl pass) #

Located type Family Declaration

data FamilyResultSig pass #

type Family Result Signature

Constructors

NoSig (XNoSig pass)

- `AnnKeywordId` :

KindSig (XCKindSig pass) (LHsKind pass)

- `AnnKeywordId` : `AnnOpenP`,`AnnDcolon`, `AnnCloseP`

TyVarSig (XTyVarSig pass) (LHsTyVarBndr () pass)

- `AnnKeywordId` : `AnnOpenP`,`AnnDcolon`, `AnnCloseP`, `AnnEqual`

XFamilyResultSig !(XXFamilyResultSig pass) |

#### Instances

Instances details

ToHie (RScoped (LocatedAn NoEpAnns (FamilyResultSig GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (FamilyResultSig GhcRn)) -> HieM [HieAST Type]
type Anno (FamilyResultSig (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (FamilyResultSig (GhcPass p)) = SrcAnn NoEpAnns

type LFamilyResultSig pass = XRec pass (FamilyResultSig pass) #

Located type Family Result Signature

data TyClGroup pass #

Type or Class Group

Constructors

TyClGroup |

Fields

- group_ext :: XCTyClGroup pass
- group_tyclds :: [LTyClDecl pass]
- group_roles :: [LRoleAnnotDecl pass]
- group_kisigs :: [LStandaloneKindSig pass]
- group_instds :: [LInstDecl pass]

XTyClGroup !(XXTyClGroup pass) |

#### Instances

Instances details

ToHie (TyClGroup GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TyClGroup GhcRn -> HieM [HieAST Type]

type LHsFunDep pass = XRec pass (FunDep pass) #

pattern XFunDep :: !(XXFunDep pass) -> FunDep pass #

data TyClDecl pass #

A type or class declaration.

Constructors

FamDecl

    type/data family T :: *->*

- `AnnKeywordId` : `AnnType`, `AnnData`, `AnnFamily`,`AnnDcolon`, `AnnWhere`,`AnnOpenP`, `AnnDcolon`,`AnnCloseP`, `AnnEqual`,`AnnRarrow`, `AnnVbar`

Fields

- tcdFExt :: XFamDecl pass
- tcdFam :: FamilyDecl pass

SynDecl

`type` declaration

- `AnnKeywordId` : `AnnType`, `AnnEqual`,

Fields

- tcdSExt :: XSynDecl pass

  Post renamer, FVs

- tcdLName :: LIdP pass

  Type constructor

- tcdTyVars :: LHsQTyVars pass

  Type variables; for an associated type these include outer binders

- tcdFixity :: LexicalFixity

  Fixity used in the declaration

- tcdRhs :: LHsType pass

  RHS of type declaration

DataDecl

`data` declaration

- `AnnKeywordId` : `AnnData`, `AnnFamily`, `AnnNewType`, `AnnNewType`,`AnnDcolon` `AnnWhere`,

Fields

- tcdDExt :: XDataDecl pass

  Post renamer, CUSK flag, FVs

- tcdLName :: LIdP pass

  Type constructor

- tcdTyVars :: LHsQTyVars pass

  Type variables; for an associated type these include outer binders

- tcdFixity :: LexicalFixity

  Fixity used in the declaration

- tcdDataDefn :: HsDataDefn pass

ClassDecl

- `AnnKeywordId` : `AnnClass`, `AnnWhere`,`AnnOpen`, `AnnClose`
- The tcdFDs will have `AnnVbar`, `AnnComma` `AnnRarrow` For details on above see Note [exact print annotations] in GHC.Parser.Annotation

Fields

- tcdCExt :: XClassDecl pass

  Post renamer, FVs

- tcdLayout :: !(LayoutInfo pass)

  Explicit or virtual braces See Note [Class LayoutInfo]

- tcdCtxt :: Maybe (LHsContext pass)

  Context...

- tcdLName :: LIdP pass

  Type constructor

- tcdTyVars :: LHsQTyVars pass

  Type variables; for an associated type these include outer binders

- tcdFixity :: LexicalFixity

  Fixity used in the declaration

- tcdFDs :: [LHsFunDep pass]

  Functional deps

- tcdSigs :: [LSig pass]

  Methods' signatures

- tcdMeths :: LHsBinds pass

  Default methods

- tcdATs :: [LFamilyDecl pass]

  Associated types;

- tcdATDefs :: [LTyFamDefltDecl pass]

  Associated type defaults

- tcdDocs :: [LDocDecl pass]

  Haddock docs

XTyClDecl !(XXTyClDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (TyClDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyClDecl GhcRn) -> HieM [HieAST Type]
type Anno (TyClDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (TyClDecl (GhcPass p)) = SrcSpanAnnA

type LTyClDecl pass = XRec pass (TyClDecl pass) #

Located Declaration of a Type or Class

data SpliceDecoration #

A splice can appear with various decorations wrapped around it. This data type captures explicitly how it was originally written, for use in the pretty printer.

Constructors

DollarSplice | $splice
BareSplice | bare splice

#### Instances

Instances details

Data SpliceDecoration |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SpliceDecoration -> c SpliceDecoration #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SpliceDecoration #

toConstr :: SpliceDecoration -> Constr #

dataTypeOf :: SpliceDecoration -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SpliceDecoration) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SpliceDecoration) #

gmapT :: (forall b. Data b => b -> b) -> SpliceDecoration -> SpliceDecoration #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SpliceDecoration -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SpliceDecoration -> r #

gmapQ :: (forall d. Data d => d -> u) -> SpliceDecoration -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SpliceDecoration -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SpliceDecoration -> m SpliceDecoration #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SpliceDecoration -> m SpliceDecoration #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SpliceDecoration -> m SpliceDecoration #

Show SpliceDecoration |
Instance details Defined in Language.Haskell.Syntax.Decls Methods showsPrec :: Int -> SpliceDecoration -> ShowS # show :: SpliceDecoration -> String # showList :: [SpliceDecoration] -> ShowS #
Eq SpliceDecoration |
Instance details Defined in Language.Haskell.Syntax.Decls Methods (==) :: SpliceDecoration -> SpliceDecoration -> Bool # (/=) :: SpliceDecoration -> SpliceDecoration -> Bool #

type LSpliceDecl pass = XRec pass (SpliceDecl pass) #

Located Splice Declaration

data HsGroup p #

Haskell Group

A `HsDecl` is categorised into a `HsGroup` before being fed to the renamer.

Constructors

HsGroup |

Fields

- hs_ext :: XCHsGroup p
- hs_valds :: HsValBinds p
- hs_splcds :: [LSpliceDecl p]
- hs_tyclds :: [TyClGroup p]
- hs_derivds :: [LDerivDecl p]
- hs_fixds :: [LFixitySig p]
- hs_defds :: [LDefaultDecl p]
- hs_fords :: [LForeignDecl p]
- hs_warnds :: [LWarnDecls p]
- hs_annds :: [LAnnDecl p]
- hs_ruleds :: [LRuleDecls p]
- hs_docs :: [LDocDecl p]

XHsGroup !(XXHsGroup p) |

data HsDecl p #

A Haskell Declaration

Constructors

TyClD (XTyClD p) (TyClDecl p) | Type or Class Declaration
InstD (XInstD p) (InstDecl p) | Instance declaration
DerivD (XDerivD p) (DerivDecl p) | Deriving declaration
ValD (XValD p) (HsBind p) | Value declaration
SigD (XSigD p) (Sig p) | Signature declaration
KindSigD (XKindSigD p) (StandaloneKindSig p) | Standalone kind signature
DefD (XDefD p) (DefaultDecl p) | 'default' declaration
ForD (XForD p) (ForeignDecl p) | Foreign declaration
WarningD (XWarningD p) (WarnDecls p) | Warning declaration
AnnD (XAnnD p) (AnnDecl p) | Annotation declaration
RuleD (XRuleD p) (RuleDecls p) | Rule declaration
SpliceD (XSpliceD p) (SpliceDecl p) | Splice declaration (Includes quasi-quotes)
DocD (XDocD p) (DocDecl p) | Documentation comment declaration
RoleAnnotD (XRoleAnnotD p) (RoleAnnotDecl p) | Role annotation declaration
XHsDecl !(XXHsDecl p) |

#### Instances

Instances details

HasHaddock (LocatedA (HsDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsDecl GhcPs) -> HdkA (LocatedA (HsDecl GhcPs))
HasHaddock (HsDecl GhcPs) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: HsDecl GhcPs -> HdkA (HsDecl GhcPs)
type Anno (HsDecl (GhcPass _1)) |
Instance details Defined in GHC.Hs.Decls type Anno (HsDecl (GhcPass _1)) = SrcSpanAnnA

type LHsDecl p #

Arguments

= XRec p (HsDecl p)

When in a list this may have

- `AnnKeywordId` : `AnnSemi`

hsGroupInstDecls :: HsGroup id -> [LInstDecl id] #

isDataDecl :: TyClDecl pass -> Bool #

`True` = argument is a `data`/`newtype` declaration.

isSynDecl :: TyClDecl pass -> Bool #

type or type instance declaration

isClassDecl :: TyClDecl pass -> Bool #

type class

isFamilyDecl :: TyClDecl pass -> Bool #

type/data family declaration

isTypeFamilyDecl :: TyClDecl pass -> Bool #

type family declaration

isOpenTypeFamilyInfo :: FamilyInfo pass -> Bool #

open type family info

isClosedTypeFamilyInfo :: FamilyInfo pass -> Bool #

closed type family info

isDataFamilyDecl :: TyClDecl pass -> Bool #

data family declaration

tyClDeclTyVars :: TyClDecl pass -> LHsQTyVars pass #

tyClGroupTyClDecls :: [TyClGroup pass] -> [LTyClDecl pass] #

tyClGroupInstDecls :: [TyClGroup pass] -> [LInstDecl pass] #

tyClGroupRoleDecls :: [TyClGroup pass] -> [LRoleAnnotDecl pass] #

tyClGroupKindSigs :: [TyClGroup pass] -> [LStandaloneKindSig pass] #

collectRuleBndrSigTys :: [RuleBndr pass] -> [HsPatSigType pass] #

docDeclDoc :: DocDecl pass -> LHsDoc pass #

annProvenanceName_maybe :: UnXRec p => AnnProvenance p -> Maybe (IdP p) #

data HsRuleAnn #

Constructors

HsRuleAnn |

Fields

- ra_tyanns :: Maybe (AddEpAnn, AddEpAnn)

  The locations of `forall` and `.` for forall'd type vars Using AddEpAnn to capture possible unicode variants

- ra_tmanns :: Maybe (AddEpAnn, AddEpAnn)

  The locations of `forall` and `.` for forall'd term vars Using AddEpAnn to capture possible unicode variants

- ra_rest :: [AddEpAnn]

#### Instances

Instances details

Data HsRuleAnn |

Instance details

Defined in GHC.Hs.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsRuleAnn -> c HsRuleAnn #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HsRuleAnn #

toConstr :: HsRuleAnn -> Constr #

dataTypeOf :: HsRuleAnn -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HsRuleAnn) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HsRuleAnn) #

gmapT :: (forall b. Data b => b -> b) -> HsRuleAnn -> HsRuleAnn #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsRuleAnn -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsRuleAnn -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsRuleAnn -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsRuleAnn -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsRuleAnn -> m HsRuleAnn #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsRuleAnn -> m HsRuleAnn #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsRuleAnn -> m HsRuleAnn #

Eq HsRuleAnn |
Instance details Defined in GHC.Hs.Decls Methods (==) :: HsRuleAnn -> HsRuleAnn -> Bool # (/=) :: HsRuleAnn -> HsRuleAnn -> Bool #

data HsRuleRn #

Constructors

HsRuleRn NameSet NameSet |

#### Instances

Instances details

Data HsRuleRn |

Instance details

Defined in GHC.Hs.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsRuleRn -> c HsRuleRn #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HsRuleRn #

toConstr :: HsRuleRn -> Constr #

dataTypeOf :: HsRuleRn -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HsRuleRn) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HsRuleRn) #

gmapT :: (forall b. Data b => b -> b) -> HsRuleRn -> HsRuleRn #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsRuleRn -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsRuleRn -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsRuleRn -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsRuleRn -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsRuleRn -> m HsRuleRn #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsRuleRn -> m HsRuleRn #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsRuleRn -> m HsRuleRn #

data XViaStrategyPs #

Constructors

XViaStrategyPs (EpAnn [AddEpAnn]) (LHsSigType GhcPs) |

#### Instances

Instances details

Outputable XViaStrategyPs |
Instance details Defined in GHC.Hs.Decls Methods ppr :: XViaStrategyPs -> SDoc #

data DataDeclRn #

Constructors

DataDeclRn |

Fields

- tcdDataCusk :: Bool

  does this have a CUSK? See Note [CUSKs: complete user-supplied kind signatures]

- tcdFVs :: NameSet

#### Instances

Instances details

Data DataDeclRn |

Instance details

Defined in GHC.Hs.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DataDeclRn -> c DataDeclRn #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DataDeclRn #

toConstr :: DataDeclRn -> Constr #

dataTypeOf :: DataDeclRn -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DataDeclRn) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DataDeclRn) #

gmapT :: (forall b. Data b => b -> b) -> DataDeclRn -> DataDeclRn #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DataDeclRn -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DataDeclRn -> r #

gmapQ :: (forall d. Data d => d -> u) -> DataDeclRn -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> DataDeclRn -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DataDeclRn -> m DataDeclRn #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DataDeclRn -> m DataDeclRn #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DataDeclRn -> m DataDeclRn #

partitionBindsAndSigs :: [LHsDecl GhcPs] -> (LHsBinds GhcPs, [LSig GhcPs], [LFamilyDecl GhcPs], [LTyFamInstDecl GhcPs], [LDataFamInstDecl GhcPs], [LDocDecl GhcPs]) #

Partition a list of HsDecls into function/pattern bindings, signatures, type family declarations, type family instances, and documentation comments.

Panics when given a declaration that cannot be put into any of the output groups.

The primary use of this function is to implement `cvBindsAndSigs`.

emptyRdrGroup :: forall (p :: Pass). HsGroup (GhcPass p) #

emptyRnGroup :: forall (p :: Pass). HsGroup (GhcPass p) #

hsGroupTopLevelFixitySigs :: forall (p :: Pass). HsGroup (GhcPass p) -> [LFixitySig (GhcPass p)] #

The fixity signatures for each top-level declaration and class method in an `HsGroup`. See Note [Top-level fixity signatures in an HsGroup]

appendGroups :: forall (p :: Pass). HsGroup (GhcPass p) -> HsGroup (GhcPass p) -> HsGroup (GhcPass p) #

tyFamInstDeclName :: forall (p :: Pass). Anno (IdGhcP p) ~ SrcSpanAnnN => TyFamInstDecl (GhcPass p) -> IdP (GhcPass p) #

tyFamInstDeclLName :: forall (p :: Pass). Anno (IdGhcP p) ~ SrcSpanAnnN => TyFamInstDecl (GhcPass p) -> LocatedN (IdP (GhcPass p)) #

tyClDeclLName :: forall (p :: Pass). Anno (IdGhcP p) ~ SrcSpanAnnN => TyClDecl (GhcPass p) -> LocatedN (IdP (GhcPass p)) #

countTyClDecls :: [TyClDecl pass] -> (Int, Int, Int, Int, Int) #

tcdName :: forall (p :: Pass). Anno (IdGhcP p) ~ SrcSpanAnnN => TyClDecl (GhcPass p) -> IdP (GhcPass p) #

hsDeclHasCusk :: TyClDecl GhcRn -> Bool #

Does this declaration have a complete, user-supplied kind signature? See Note [CUSKs: complete user-supplied kind signatures]

pp_vanilla_decl_head :: forall (p :: Pass). OutputableBndrId p => XRec (GhcPass p) (IdP (GhcPass p)) -> LHsQTyVars (GhcPass p) -> LexicalFixity -> Maybe (LHsContext (GhcPass p)) -> SDoc #

pprTyClDeclFlavour :: forall (p :: Pass). TyClDecl (GhcPass p) -> SDoc #

familyDeclLName :: forall (p :: Pass). FamilyDecl (GhcPass p) -> XRec (GhcPass p) (IdP (GhcPass p)) #

familyDeclName :: forall (p :: Pass). FamilyDecl (GhcPass p) -> IdP (GhcPass p) #

famResultKindSignature :: forall (p :: Pass). FamilyResultSig (GhcPass p) -> Maybe (LHsKind (GhcPass p)) #

resultVariableName :: forall (a :: Pass). FamilyResultSig (GhcPass a) -> Maybe (IdP (GhcPass a)) #

Maybe return name of the result type variable

derivStrategyName :: DerivStrategy a -> SDoc #

A short description of a `DerivStrategy'`.

standaloneKindSigName :: forall (p :: Pass). StandaloneKindSig (GhcPass p) -> IdP (GhcPass p) #

getConNames :: ConDecl GhcRn -> [LocatedN Name] #

getRecConArgs_maybe :: ConDecl GhcRn -> Maybe (LocatedL [LConDeclField GhcRn]) #

Return ``Just` fields` if a data constructor declaration uses record syntax (i.e., `RecCon`), where `fields` are the field selectors. Otherwise, return `Nothing`.

hsConDeclTheta :: forall (p :: Pass). Maybe (LHsContext (GhcPass p)) -> [LHsType (GhcPass p)] #

ppDataDefnHeader :: forall (p :: Pass). OutputableBndrId p => (Maybe (LHsContext (GhcPass p)) -> SDoc) -> HsDataDefn (GhcPass p) -> SDoc #

pprTyFamInstDecl :: forall (p :: Pass). OutputableBndrId p => TopLevelFlag -> TyFamInstDecl (GhcPass p) -> SDoc #

pprDataFamInstFlavour :: forall (p :: Pass). DataFamInstDecl (GhcPass p) -> SDoc #

pprHsFamInstLHS :: forall (p :: Pass). OutputableBndrId p => IdP (GhcPass p) -> HsOuterFamEqnTyVarBndrs (GhcPass p) -> HsTyPats (GhcPass p) -> LexicalFixity -> Maybe (LHsContext (GhcPass p)) -> SDoc #

instDeclDataFamInsts :: forall (p :: Pass). [LInstDecl (GhcPass p)] -> [DataFamInstDecl (GhcPass p)] #

newOrDataToFlavour :: NewOrData -> TyConFlavour tc #

Convert a `NewOrData` to a `TyConFlavour`

anyLConIsGadt :: Foldable f => f (GenLocated l (ConDecl pass)) -> Bool #

foldDerivStrategy :: forall p (pass :: Pass) r. p ~ GhcPass pass => r -> (XViaStrategy p -> r) -> DerivStrategy p -> r #

Eliminate a `DerivStrategy`.

mapDerivStrategy :: forall p (pass :: Pass). p ~ GhcPass pass => (XViaStrategy p -> XViaStrategy p) -> DerivStrategy p -> DerivStrategy p #

Map over the `via` type if dealing with `ViaStrategy`. Otherwise, return the `DerivStrategy` unchanged.

flattenRuleDecls :: forall (p :: Pass). [LRuleDecls (GhcPass p)] -> [LRuleDecl (GhcPass p)] #

pprFullRuleName :: SourceText -> GenLocated a RuleName -> SDoc #

roleAnnotDeclName :: forall (p :: Pass). RoleAnnotDecl (GhcPass p) -> IdP (GhcPass p) #

module GHC.Hs.Expr

module GHC.Hs.Doc

module GHC.Hs.Extension

module GHC.Hs.ImpExp

module GHC.Hs.Pat

module GHC.Hs.Type

mkHsAppTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p) #

mkHsAppKindTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsToken "@" (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p) #

data LConsWithFields (p :: Pass) #

A mapping from constructors to all of their fields.

See Note [Collecting record fields in data declarations].

Constructors

LConsWithFields |

Fields

- consWithFieldIndices :: [(LocatedA (IdP (GhcPass p)), Maybe [Located Int])]
- consFields :: IntMap (LFieldOcc (GhcPass p))

data TyDeclBinders (p :: Pass) #

Constructors

TyDeclBinders |

Fields

- tyDeclMainBinder :: !(LocatedA (IdP (GhcPass p)), TyConFlavour ())
- tyDeclATs :: ![(LocatedA (IdP (GhcPass p)), TyConFlavour ())]
- tyDeclOpSigs :: ![LocatedA (IdP (GhcPass p))]
- tyDeclConsWithFields :: !(LConsWithFields p)

class UnXRec p => CollectPass p where #

This class specifies how to collect variable identifiers from extension patterns in the given pass. Consumers of the GHC API that define their own passes should feel free to implement instances in order to make use of functions which depend on it.

In particular, Haddock already makes use of this, with an instance for its `DocNameI` pass so that it can reuse the code in GHC for collecting binders.

Methods

collectXXPat :: CollectFlag p -> XXPat p -> [IdP p] -> [IdP p] #

collectXXHsBindsLR :: XXHsBindsLR p pR -> [IdP p] -> [IdP p] #

collectXSplicePat :: CollectFlag p -> XSplicePat p -> [IdP p] -> [IdP p] #

#### Instances

Instances details

IsPass p => CollectPass (GhcPass p) |
Instance details Defined in GHC.Hs.Utils Methods collectXXPat :: CollectFlag (GhcPass p) -> XXPat (GhcPass p) -> [IdP (GhcPass p)] -> [IdP (GhcPass p)] # collectXXHsBindsLR :: XXHsBindsLR (GhcPass p) pR -> [IdP (GhcPass p)] -> [IdP (GhcPass p)] # collectXSplicePat :: CollectFlag (GhcPass p) -> XSplicePat (GhcPass p) -> [IdP (GhcPass p)] -> [IdP (GhcPass p)] #

data CollectFlag p where #

Indicate if evidence binders have to be collected.

This type is used as a boolean (should we collect evidence binders or not?) but also to pass an evidence that the AST has been typechecked when we do want to collect evidence binders, otherwise these binders are not available.

See Note [Dictionary binders in ConPatOut]

Constructors

CollNoDictBinders :: forall p. CollectFlag p | Don't collect evidence binders
CollWithDictBinders :: CollectFlag (GhcPass 'Typechecked) | Collect evidence binders

mkHsPar :: forall (id :: Pass). LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) #

    e => (e)

mkSimpleMatch :: forall (p :: Pass) body. (Anno (Match (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcSpanAnnA, Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcAnn NoEpAnns) => HsMatchContext (GhcPass p) -> [LPat (GhcPass p)] -> LocatedA (body (GhcPass p)) -> LMatch (GhcPass p) (LocatedA (body (GhcPass p))) #

unguardedGRHSs :: forall (p :: Pass) body. Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcAnn NoEpAnns => SrcSpan -> LocatedA (body (GhcPass p)) -> EpAnn GrhsAnn -> GRHSs (GhcPass p) (LocatedA (body (GhcPass p))) #

unguardedRHS :: forall (p :: Pass) body. Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcAnn NoEpAnns => EpAnn GrhsAnn -> SrcSpan -> LocatedA (body (GhcPass p)) -> [LGRHS (GhcPass p) (LocatedA (body (GhcPass p)))] #

mkMatchGroup :: forall (p :: Pass) body. AnnoBody p body => Origin -> LocatedL [LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p))))] -> MatchGroup (GhcPass p) (LocatedA (body (GhcPass p))) #

mkLamCaseMatchGroup :: forall (p :: Pass) body. AnnoBody p body => Origin -> LamCaseVariant -> LocatedL [LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p))))] -> MatchGroup (GhcPass p) (LocatedA (body (GhcPass p))) #

mkLocatedList :: Semigroup a => [GenLocated (SrcAnn a) e2] -> LocatedAn an [GenLocated (SrcAnn a) e2] #

mkHsApp :: forall (id :: Pass). LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) #

mkHsAppWith :: forall (id :: Pass). (LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> HsExpr (GhcPass id) -> LHsExpr (GhcPass id)) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) #

mkHsApps :: forall (id :: Pass). LHsExpr (GhcPass id) -> [LHsExpr (GhcPass id)] -> LHsExpr (GhcPass id) #

mkHsAppsWith :: forall (id :: Pass). (LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> HsExpr (GhcPass id) -> LHsExpr (GhcPass id)) -> LHsExpr (GhcPass id) -> [LHsExpr (GhcPass id)] -> LHsExpr (GhcPass id) #

mkHsAppType :: LHsExpr GhcRn -> LHsWcType GhcRn -> LHsExpr GhcRn #

mkHsAppTypes :: LHsExpr GhcRn -> [LHsWcType GhcRn] -> LHsExpr GhcRn #

mkHsLam :: forall (p :: Pass). (IsPass p, XMG (GhcPass p) (LHsExpr (GhcPass p)) ~ Origin) => [LPat (GhcPass p)] -> LHsExpr (GhcPass p) -> LHsExpr (GhcPass p) #

mkHsLams :: [TyVar] -> [EvVar] -> LHsExpr GhcTc -> LHsExpr GhcTc #

mkHsCaseAlt :: forall (p :: Pass) body. (Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcAnn NoEpAnns, Anno (Match (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcSpanAnnA) => LPat (GhcPass p) -> LocatedA (body (GhcPass p)) -> LMatch (GhcPass p) (LocatedA (body (GhcPass p))) #

A simple case alternative with a single pattern, no binds, no guards; pre-typechecking

nlHsTyApp :: Id -> [Type] -> LHsExpr GhcTc #

nlHsTyApps :: Id -> [Type] -> [LHsExpr GhcTc] -> LHsExpr GhcTc #

mkLHsPar :: forall (id :: Pass). IsPass id => LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) #

Wrap in parens if ``hsExprNeedsParens` appPrec` says it needs them So `f x` becomes `(f x)`, but `3` stays as `3`.

mkParPat :: forall (p :: Pass). IsPass p => LPat (GhcPass p) -> LPat (GhcPass p) #

nlParPat :: forall (name :: Pass). LPat (GhcPass name) -> LPat (GhcPass name) #

mkRecStmt :: forall (idL :: Pass) bodyR. Anno [GenLocated (Anno (StmtLR (GhcPass idL) GhcPs bodyR)) (StmtLR (GhcPass idL) GhcPs bodyR)] ~ SrcSpanAnnL => EpAnn AnnList -> LocatedL [LStmtLR (GhcPass idL) GhcPs bodyR] -> StmtLR (GhcPass idL) GhcPs bodyR #

mkHsIntegral :: IntegralLit -> HsOverLit GhcPs #

mkHsFractional :: FractionalLit -> HsOverLit GhcPs #

mkHsIsString :: SourceText -> FastString -> HsOverLit GhcPs #

mkHsDo :: HsDoFlavour -> LocatedL [ExprLStmt GhcPs] -> HsExpr GhcPs #

mkHsDoAnns :: HsDoFlavour -> LocatedL [ExprLStmt GhcPs] -> EpAnn AnnList -> HsExpr GhcPs #

mkHsComp :: HsDoFlavour -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> HsExpr GhcPs #

mkHsCompAnns :: HsDoFlavour -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> EpAnn AnnList -> HsExpr GhcPs #

mkHsIf :: LHsExpr GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs -> EpAnn AnnsIf -> HsExpr GhcPs #

mkHsCmdIf :: LHsExpr GhcPs -> LHsCmd GhcPs -> LHsCmd GhcPs -> EpAnn AnnsIf -> HsCmd GhcPs #

mkNPat :: LocatedAn NoEpAnns (HsOverLit GhcPs) -> Maybe (SyntaxExpr GhcPs) -> EpAnn [AddEpAnn] -> Pat GhcPs #

mkNPlusKPat :: LocatedN RdrName -> LocatedAn NoEpAnns (HsOverLit GhcPs) -> EpAnn EpaLocation -> Pat GhcPs #

emptyTransStmt :: EpAnn [AddEpAnn] -> StmtLR GhcPs GhcPs (LHsExpr GhcPs) #

mkTransformStmt :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> StmtLR GhcPs GhcPs (LHsExpr GhcPs) #

mkTransformByStmt :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> LHsExpr GhcPs -> StmtLR GhcPs GhcPs (LHsExpr GhcPs) #

mkGroupUsingStmt :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> StmtLR GhcPs GhcPs (LHsExpr GhcPs) #

mkGroupByUsingStmt :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs -> LHsExpr GhcPs -> StmtLR GhcPs GhcPs (LHsExpr GhcPs) #

mkLastStmt :: forall (idR :: Pass) bodyR (idL :: Pass). IsPass idR => LocatedA (bodyR (GhcPass idR)) -> StmtLR (GhcPass idL) (GhcPass idR) (LocatedA (bodyR (GhcPass idR))) #

mkBodyStmt :: forall bodyR (idL :: Pass). LocatedA (bodyR GhcPs) -> StmtLR (GhcPass idL) GhcPs (LocatedA (bodyR GhcPs)) #

mkPsBindStmt :: EpAnn [AddEpAnn] -> LPat GhcPs -> LocatedA (bodyR GhcPs) -> StmtLR GhcPs GhcPs (LocatedA (bodyR GhcPs)) #

mkRnBindStmt :: LPat GhcRn -> LocatedA (bodyR GhcRn) -> StmtLR GhcRn GhcRn (LocatedA (bodyR GhcRn)) #

mkTcBindStmt :: LPat GhcTc -> LocatedA (bodyR GhcTc) -> StmtLR GhcTc GhcTc (LocatedA (bodyR GhcTc)) #

unitRecStmtTc :: RecStmtTc #

emptyRecStmt :: forall (idL :: Pass) bodyR. Anno [GenLocated (Anno (StmtLR (GhcPass idL) GhcPs bodyR)) (StmtLR (GhcPass idL) GhcPs bodyR)] ~ SrcSpanAnnL => StmtLR (GhcPass idL) GhcPs bodyR #

emptyRecStmtName :: Anno [GenLocated (Anno (StmtLR GhcRn GhcRn bodyR)) (StmtLR GhcRn GhcRn bodyR)] ~ SrcSpanAnnL => StmtLR GhcRn GhcRn bodyR #

emptyRecStmtId :: Stmt GhcTc (LocatedA (HsCmd GhcTc)) #

mkLetStmt :: EpAnn [AddEpAnn] -> HsLocalBinds GhcPs -> StmtLR GhcPs GhcPs (LocatedA b) #

mkHsOpApp :: LHsExpr GhcPs -> IdP GhcPs -> LHsExpr GhcPs -> HsExpr GhcPs #

A useful function for building `OpApps`. The operator is always a variable, and we don't know the fixity yet.

mkHsString :: forall (p :: Pass). String -> HsLit (GhcPass p) #

mkHsStringFS :: forall (p :: Pass). FastString -> HsLit (GhcPass p) #

mkHsStringPrimLit :: forall (p :: Pass). FastString -> HsLit (GhcPass p) #

mkHsCharPrimLit :: forall (p :: Pass). Char -> HsLit (GhcPass p) #

mkConLikeTc :: ConLike -> HsExpr GhcTc #

nlHsVar :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> LHsExpr (GhcPass p) #

nl_HsVar :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> HsExpr (GhcPass p) #

nlHsDataCon :: DataCon -> LHsExpr GhcTc #

NB: Only for `LHsExpr` `Id`.

nlHsLit :: forall (p :: Pass). HsLit (GhcPass p) -> LHsExpr (GhcPass p) #

nlHsIntLit :: forall (p :: Pass). Integer -> LHsExpr (GhcPass p) #

nlVarPat :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> LPat (GhcPass p) #

nlLitPat :: HsLit GhcPs -> LPat GhcPs #

nlHsApp :: forall (id :: Pass). IsPass id => LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) #

nlHsSyntaxApps :: SyntaxExprTc -> [LHsExpr GhcTc] -> LHsExpr GhcTc #

nlHsApps :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> [LHsExpr (GhcPass p)] -> LHsExpr (GhcPass p) #

nlHsVarApps :: forall (p :: Pass) a. IsSrcSpanAnn p a => IdP (GhcPass p) -> [IdP (GhcPass p)] -> LHsExpr (GhcPass p) #

nlConVarPat :: RdrName -> [RdrName] -> LPat GhcPs #

nlConVarPatName :: Name -> [Name] -> LPat GhcRn #

nlInfixConPat :: RdrName -> LPat GhcPs -> LPat GhcPs -> LPat GhcPs #

nlConPat :: RdrName -> [LPat GhcPs] -> LPat GhcPs #

nlConPatName :: Name -> [LPat GhcRn] -> LPat GhcRn #

nlNullaryConPat :: RdrName -> LPat GhcPs #

nlWildConPat :: DataCon -> LPat GhcPs #

nlWildPat :: LPat GhcPs #

Wildcard pattern - after parsing

nlWildPatName :: LPat GhcRn #

Wildcard pattern - after renaming

nlHsDo :: HsDoFlavour -> [LStmt GhcPs (LHsExpr GhcPs)] -> LHsExpr GhcPs #

nlHsOpApp :: LHsExpr GhcPs -> IdP GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs #

nlHsLam :: LMatch GhcPs (LHsExpr GhcPs) -> LHsExpr GhcPs #

nlHsPar :: forall (id :: Pass). LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) #

nlHsIf :: LHsExpr GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs #

nlHsCase :: LHsExpr GhcPs -> [LMatch GhcPs (LHsExpr GhcPs)] -> LHsExpr GhcPs #

nlList :: [LHsExpr GhcPs] -> LHsExpr GhcPs #

nlHsAppTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p) #

nlHsTyVar :: forall (p :: Pass) a. IsSrcSpanAnn p a => PromotionFlag -> IdP (GhcPass p) -> LHsType (GhcPass p) #

nlHsFunTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p) #

nlHsParTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p) #

nlHsTyConApp :: forall (p :: Pass) a. IsSrcSpanAnn p a => PromotionFlag -> LexicalFixity -> IdP (GhcPass p) -> [LHsTypeArg (GhcPass p)] -> LHsType (GhcPass p) #

nlHsAppKindTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsKind (GhcPass p) -> LHsType (GhcPass p) #

mkLHsTupleExpr :: forall (p :: Pass). [LHsExpr (GhcPass p)] -> XExplicitTuple (GhcPass p) -> LHsExpr (GhcPass p) #

mkLHsVarTuple :: forall (p :: Pass) a. IsSrcSpanAnn p a => [IdP (GhcPass p)] -> XExplicitTuple (GhcPass p) -> LHsExpr (GhcPass p) #

nlTuplePat :: [LPat GhcPs] -> Boxity -> LPat GhcPs #

missingTupArg :: EpAnn EpaLocation -> HsTupArg GhcPs #

mkBigLHsVarTup :: forall (p :: Pass) a. IsSrcSpanAnn p a => [IdP (GhcPass p)] -> XExplicitTuple (GhcPass p) -> LHsExpr (GhcPass p) #

The Big equivalents for the source tuple expressions

mkBigLHsTup :: forall (id :: Pass). [LHsExpr (GhcPass id)] -> XExplicitTuple (GhcPass id) -> LHsExpr (GhcPass id) #

mkBigLHsVarPatTup :: [IdP GhcRn] -> LPat GhcRn #

The Big equivalents for the source tuple patterns

mkBigLHsPatTup :: [LPat GhcRn] -> LPat GhcRn #

hsTypeToHsSigType :: LHsType GhcPs -> LHsSigType GhcPs #

Convert an `LHsType` to an `LHsSigType`.

hsTypeToHsSigWcType :: LHsType GhcPs -> LHsSigWcType GhcPs #

Convert an `LHsType` to an `LHsSigWcType`.

mkHsSigEnv :: (LSig GhcRn -> Maybe ([LocatedN Name], a)) -> [LSig GhcRn] -> NameEnv a #

mkClassOpSigs :: [LSig GhcPs] -> [LSig GhcPs] #

Convert `TypeSig` to `ClassOpSig`. The former is what is parsed, but the latter is what we need in class/instance declarations

mkLHsWrap :: HsWrapper -> LHsExpr GhcTc -> LHsExpr GhcTc #

mkHsWrap :: HsWrapper -> HsExpr GhcTc -> HsExpr GhcTc #

mkHsWrapCo :: TcCoercionN -> HsExpr GhcTc -> HsExpr GhcTc #

mkHsWrapCoR :: TcCoercionR -> HsExpr GhcTc -> HsExpr GhcTc #

mkLHsWrapCo :: TcCoercionN -> LHsExpr GhcTc -> LHsExpr GhcTc #

mkHsCmdWrap :: HsWrapper -> HsCmd GhcTc -> HsCmd GhcTc #

mkLHsCmdWrap :: HsWrapper -> LHsCmd GhcTc -> LHsCmd GhcTc #

mkHsWrapPat :: HsWrapper -> Pat GhcTc -> Type -> Pat GhcTc #

mkHsWrapPatCo :: TcCoercionN -> Pat GhcTc -> Type -> Pat GhcTc #

mkHsDictLet :: TcEvBinds -> LHsExpr GhcTc -> LHsExpr GhcTc #

mkFunBind :: Origin -> LocatedN RdrName -> [LMatch GhcPs (LHsExpr GhcPs)] -> HsBind GhcPs #

Not infix, with place holders for coercion and free vars

mkTopFunBind :: Origin -> LocatedN Name -> [LMatch GhcRn (LHsExpr GhcRn)] -> HsBind GhcRn #

In Name-land, with empty bind_fvs

mkHsVarBind :: SrcSpan -> RdrName -> LHsExpr GhcPs -> LHsBind GhcPs #

mkVarBind :: IdP GhcTc -> LHsExpr GhcTc -> LHsBind GhcTc #

mkPatSynBind :: LocatedN RdrName -> HsPatSynDetails GhcPs -> LPat GhcPs -> HsPatSynDir GhcPs -> EpAnn [AddEpAnn] -> HsBind GhcPs #

isInfixFunBind :: forall id1 id2. UnXRec id2 => HsBindLR id1 id2 -> Bool #

If any of the matches in the `FunBind` are infix, the `FunBind` is considered infix.

spanHsLocaLBinds :: forall (p :: Pass). HsLocalBinds (GhcPass p) -> SrcSpan #

Return the `SrcSpan` encompassing the contents of any enclosed binds

mkSimpleGeneratedFunBind :: SrcSpan -> RdrName -> [LPat GhcPs] -> LHsExpr GhcPs -> LHsBind GhcPs #

Convenience function using `mkFunBind`. This is for generated bindings only, do not use for user-written code.

mkPrefixFunRhs :: LIdP (NoGhcTc p) -> HsMatchContext p #

Make a prefix, non-strict function `HsMatchContext`

mkMatch :: forall (p :: Pass). IsPass p => HsMatchContext (GhcPass p) -> [LPat (GhcPass p)] -> LHsExpr (GhcPass p) -> HsLocalBinds (GhcPass p) -> LMatch (GhcPass p) (LHsExpr (GhcPass p)) #

isUnliftedHsBind :: HsBind GhcTc -> Bool #

Should we treat this as an unlifted bind? This will be true for any bind that binds an unlifted variable, but we must be careful around AbsBinds. See Note [isUnliftedHsBind]. For usage information, see Note [Strict binds checks] is GHC.HsToCore.Binds.

isUnliftedHsBinds :: LHsBinds GhcTc -> Bool #

isBangedHsBind :: HsBind GhcTc -> Bool #

Is a binding a strict variable or pattern bind (e.g. `!x = ...`)?

collectLocalBinders :: forall (idL :: Pass) (idR :: Pass). CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> HsLocalBindsLR (GhcPass idL) (GhcPass idR) -> [IdP (GhcPass idL)] #

collectHsIdBinders :: forall (idL :: Pass) (idR :: Pass). CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> HsValBindsLR (GhcPass idL) (GhcPass idR) -> [IdP (GhcPass idL)] #

Collect `Id` binders only, or `Id`s + pattern synonyms, respectively

collectHsValBinders :: forall (idL :: Pass) idR. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> HsValBindsLR (GhcPass idL) idR -> [IdP (GhcPass idL)] #

collectHsBindBinders :: CollectPass p => CollectFlag p -> HsBindLR p idR -> [IdP p] #

Collect both `Id`s and pattern-synonym binders

collectHsBindListBinders :: CollectPass p => CollectFlag p -> [LHsBindLR p idR] -> [IdP p] #

Same as `collectHsBindsBinders`, but works over a list of bindings

collectMethodBinders :: UnXRec idL => LHsBindsLR idL idR -> [LIdP idL] #

Used exclusively for the bindings of an instance decl which are all `FunBinds`

collectLStmtsBinders :: forall (idL :: Pass) (idR :: Pass) body. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> [LStmtLR (GhcPass idL) (GhcPass idR) body] -> [IdP (GhcPass idL)] #

collectStmtsBinders :: forall (idL :: Pass) (idR :: Pass) body. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> [StmtLR (GhcPass idL) (GhcPass idR) body] -> [IdP (GhcPass idL)] #

collectLStmtBinders :: forall (idL :: Pass) (idR :: Pass) body. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> LStmtLR (GhcPass idL) (GhcPass idR) body -> [IdP (GhcPass idL)] #

collectStmtBinders :: forall (idL :: Pass) (idR :: Pass) body. CollectPass (GhcPass idL) => CollectFlag (GhcPass idL) -> StmtLR (GhcPass idL) (GhcPass idR) body -> [IdP (GhcPass idL)] #

collectPatBinders :: CollectPass p => CollectFlag p -> LPat p -> [IdP p] #

collectPatsBinders :: CollectPass p => CollectFlag p -> [LPat p] -> [IdP p] #

hsGroupBinders :: HsGroup GhcRn -> [Name] #

hsTyClForeignBinders :: [TyClGroup GhcRn] -> [LForeignDecl GhcRn] -> [Name] #

hsLTyClDeclBinders :: forall (p :: Pass). (IsPass p, OutputableBndrId p) => LocatedA (TyClDecl (GhcPass p)) -> TyDeclBinders p #

Returns all the binding names of the decl. The first one is guaranteed to be the name of the decl. The first component represents all binding names except record fields; the second represents field occurrences. For record fields mentioned in multiple constructors, the SrcLoc will be from the first occurrence.

Each returned (Located name) has a SrcSpan for the whole declaration. See Note [SrcSpan for binders]

hsForeignDeclsBinders :: forall (p :: Pass) a. (UnXRec (GhcPass p), IsSrcSpanAnn p a) => [LForeignDecl (GhcPass p)] -> [LIdP (GhcPass p)] #

See Note [SrcSpan for binders]

hsPatSynSelectors :: forall (p :: Pass). IsPass p => HsValBinds (GhcPass p) -> [FieldOcc (GhcPass p)] #

Collects record pattern-synonym selectors only; the pattern synonym names are collected by `collectHsValBinders`.

getPatSynBinds :: UnXRec id => [(RecFlag, LHsBinds id)] -> [PatSynBind id id] #

hsDataFamInstBinders :: forall (p :: Pass). (IsPass p, OutputableBndrId p) => DataFamInstDecl (GhcPass p) -> LConsWithFields p #

the `SrcLoc` returned are for the whole declarations, not just the names

lStmtsImplicits :: forall (idR :: Pass) (body :: Type -> Type). [LStmtLR GhcRn (GhcPass idR) (LocatedA (body (GhcPass idR)))] -> [(SrcSpan, [Name])] #

hsValBindsImplicits :: forall (idR :: Pass). HsValBindsLR GhcRn (GhcPass idR) -> [(SrcSpan, [Name])] #

lPatImplicits :: LPat GhcRn -> [(SrcSpan, [Name])] #

data DerivStrategy pass #

Which technique the user explicitly requested when deriving an instance.

Constructors

StockStrategy (XStockStrategy pass) | GHC's "standard" strategy, which is to implement a custom instance for the data type. This only works for certain types that GHC knows about (e.g., `Eq`, `Show`, `Functor` when `-XDeriveFunctor` is enabled, etc.)

AnyclassStrategy (XAnyClassStrategy pass)

    -XDeriveAnyClass

NewtypeStrategy (XNewtypeStrategy pass)

    -XGeneralizedNewtypeDeriving

ViaStrategy (XViaStrategy pass)

    -XDerivingVia

#### Instances

Instances details

ToHie (RScoped (LocatedAn NoEpAnns (DerivStrategy GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (DerivStrategy GhcRn)) -> HieM [HieAST Type]
type Anno (DerivStrategy (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DerivStrategy (GhcPass p)) = SrcAnn NoEpAnns

data InjectivityAnn pass #

If the user supplied an injectivity annotation it is represented using InjectivityAnn. At the moment this is a single injectivity condition - see Note [Injectivity annotation]. `Located name` stores the LHS of injectivity condition. `[Located name]` stores the RHS of injectivity condition. Example:

type family Foo a b c = r | r -> a c where ...

This will be represented as "InjectivityAnn `r` [`a`, `c`]"

Constructors

InjectivityAnn (XCInjectivityAnn pass) (LIdP pass) [LIdP pass]

- `AnnKeywordId` : `AnnRarrow`, `AnnVbar`

XInjectivityAnn !(XXInjectivityAnn pass) |

#### Instances

Instances details

ToHie (LocatedAn NoEpAnns (InjectivityAnn GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (InjectivityAnn GhcRn) -> HieM [HieAST Type]
type Anno (InjectivityAnn (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (InjectivityAnn (GhcPass p)) = SrcAnn NoEpAnns

data RuleBndr pass #

Rule Binder

Constructors

RuleBndr (XCRuleBndr pass) (LIdP pass) |
RuleBndrSig (XRuleBndrSig pass) (LIdP pass) (HsPatSigType pass) |

XRuleBndr !(XXRuleBndr pass)

- `AnnKeywordId` : `AnnOpen`, `AnnDcolon`,`AnnClose`

#### Instances

Instances details

ToHie (RScoped (LocatedAn NoEpAnns (RuleBndr GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (RuleBndr GhcRn)) -> HieM [HieAST Type]
type Anno (RuleBndr (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RuleBndr (GhcPass p)) = SrcAnn NoEpAnns

type BangType pass = HsType pass #

Bang Type

In the parser, strictness and packedness annotations bind more tightly than docstrings. This means that when consuming a `BangType` (and looking for `HsBangTy`) we must be ready to peer behind a potential layer of `HsDocTy`. See #15206 for motivation and `getBangType` for an example.

type Stmt id body = StmtLR id id body #

`do` block Statement

data Match p body #

Constructors

Match |

Fields

- m_ext :: XCMatch p body
- m_ctxt :: HsMatchContext p
- m_pats :: [LPat p]
- m_grhss :: GRHSs p body

XMatch !(XXMatch p body) |

#### Instances

Instances details

(HiePass p, Data (body (GhcPass p)), AnnoBody p body, ToHie (LocatedA (body (GhcPass p)))) => ToHie (LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p)))) -> HieM [HieAST Type]
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcSpanAnnA
type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcSpanAnnA
type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA

data Pat p #

Pattern

- `AnnKeywordId` : `AnnBang`

Constructors

WildPat (XWildPat p) | Wildcard Pattern The sole reason for a type on a WildPat is to support hsPatType :: Pat Id -> Type
VarPat (XVarPat p) (LIdP p) | Variable Pattern
LazyPat (XLazyPat p) (LPat p) | Lazy Pattern ^ - `AnnKeywordId` : `AnnTilde`
AsPat (XAsPat p) (LIdP p) !(LHsToken "@" p) (LPat p) | As pattern ^ - `AnnKeywordId` : `AnnAt`
ParPat |

Fields

- (XParPat p)
- !(LHsToken "(" p)
- (LPat p)

  Parenthesised pattern

- !(LHsToken ")" p)
  - `AnnKeywordId` : `AnnOpen` `'('`, `AnnClose` `')'`

BangPat (XBangPat p) (LPat p) | Bang pattern ^ - `AnnKeywordId` : `AnnBang`

ListPat (XListPat p) [LPat p]

Syntactic List

- `AnnKeywordId` : `AnnOpen` `'['`, `AnnClose` `']'`

TuplePat (XTuplePat p) [LPat p] Boxity

Tuple sub-patterns

- `AnnKeywordId` : `AnnOpen` `'('` or `'(#'`, `AnnClose` `')'` or `'#)'`

SumPat (XSumPat p) (LPat p) ConTag SumWidth

Anonymous sum pattern

- `AnnKeywordId` : `AnnOpen` `'(#'`, `AnnClose` `'#)'`

ConPat | Constructor Pattern

Fields

- pat_con_ext :: XConPat p
- pat_con :: XRec p (ConLikeP p)
- pat_args :: HsConPatDetails p

ViewPat

- `AnnKeywordId` : `AnnRarrow`

Fields

- (XViewPat p)
- (LHsExpr p)
- (LPat p)

  View Pattern

SplicePat

- `AnnKeywordId` : `AnnOpen` `'$('` `AnnClose` `')'`

Fields

- (XSplicePat p)
- (HsUntypedSplice p)

  Splice Pattern (Includes quasi-quotes)

LitPat (XLitPat p) (HsLit p) | Literal Pattern Used for *non-overloaded* literal patterns: Int#, Char#, Int, Char, String, etc.

NPat (XNPat p) (XRec p (HsOverLit p)) (Maybe (SyntaxExpr p)) (SyntaxExpr p)

Natural Pattern

- `AnnKeywordId` : `AnnVal` ``+``

NPlusKPat (XNPlusKPat p) (LIdP p) (XRec p (HsOverLit p)) (HsOverLit p) (SyntaxExpr p) (SyntaxExpr p) | n+k pattern

SigPat

- `AnnKeywordId` : `AnnDcolon`

Fields

- (XSigPat p)
- (LPat p)
- (HsPatSigType (NoGhcTc p))

  Pattern with a type signature

XPat !(XXPat p) |

#### Instances

Instances details

NFData (Pat (GhcPass 'Renamed)) # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: Pat (GhcPass 'Renamed) -> () #
HiePass p => HasType (LocatedA (Pat (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (Pat (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (PScoped (LocatedA (Pat (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: PScoped (LocatedA (Pat (GhcPass p))) -> HieM [HieAST Type]
type Anno (Pat (GhcPass p)) |
Instance details Defined in GHC.Hs.Pat type Anno (Pat (GhcPass p)) = SrcSpanAnnA

data NewOrData #

When we only care whether a data-type declaration is `data` or `newtype`, but not what constructors it has

Constructors

NewType

    newtype Blah ...

DataType

    data Blah ...

#### Instances

Instances details

Data NewOrData |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NewOrData -> c NewOrData #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NewOrData #

toConstr :: NewOrData -> Constr #

dataTypeOf :: NewOrData -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NewOrData) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NewOrData) #

gmapT :: (forall b. Data b => b -> b) -> NewOrData -> NewOrData #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NewOrData -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NewOrData -> r #

gmapQ :: (forall d. Data d => d -> u) -> NewOrData -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> NewOrData -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> NewOrData -> m NewOrData #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NewOrData -> m NewOrData #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NewOrData -> m NewOrData #

Eq NewOrData |
Instance details Defined in Language.Haskell.Syntax.Decls Methods (==) :: NewOrData -> NewOrData -> Bool # (/=) :: NewOrData -> NewOrData -> Bool #

data WarnDecl pass #

Warning pragma Declaration

Constructors

Warning (XWarning pass) [LIdP pass] (WarningTxt pass) |
XWarnDecl !(XXWarnDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (WarnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecl GhcRn) -> HieM [HieAST Type]
type Anno (WarnDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (WarnDecl (GhcPass p)) = SrcSpanAnnA

data AnnDecl pass #

Annotation Declaration

Constructors

HsAnnotation (XHsAnnotation pass) (AnnProvenance pass) (XRec pass (HsExpr pass))

- `AnnKeywordId` : `AnnOpen`, `AnnType` `AnnModule` `AnnClose`

XAnnDecl !(XXAnnDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (AnnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (AnnDecl GhcRn) -> HieM [HieAST Type]
type Anno (AnnDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (AnnDecl (GhcPass p)) = SrcSpanAnnA

data IE pass #

Imported or exported entity.

Constructors

IEVar (XIEVar pass) (LIEWrappedName pass) | Imported or Exported Variable
IEThingAbs (XIEThingAbs pass) (LIEWrappedName pass) | Imported or exported Thing with Absent list The thing is a Class/Type (can't tell) - `AnnKeywordId`s : `AnnPattern`, `AnnType`,`AnnVal`

IEThingAll (XIEThingAll pass) (LIEWrappedName pass)

Imported or exported Thing with All imported or exported

The thing is a ClassType and the All refers to methodsconstructors

- `AnnKeywordId`s : `AnnOpen`, `AnnDotdot`,`AnnClose`, `AnnType`

IEThingWith (XIEThingWith pass) (LIEWrappedName pass) IEWildcard [LIEWrappedName pass] | Imported or exported Thing With given imported or exported The thing is a Class/Type and the imported or exported things are its children. - `AnnKeywordId`s : `AnnOpen`, `AnnClose`, `AnnComma`, `AnnType`

IEModuleContents (XIEModuleContents pass) (XRec pass ModuleName)

Imported or exported module contents

(Export Only)

- `AnnKeywordId`s : `AnnModule`

IEGroup (XIEGroup pass) Int (LHsDoc pass) | Doc section heading
IEDoc (XIEDoc pass) (LHsDoc pass) | Some documentation
IEDocNamed (XIEDocNamed pass) String | Reference to named doc
XIE !(XXIE pass) |

#### Instances

Instances details

ToHie (IEContext (LocatedA (IE GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA (IE GhcRn)) -> HieM [HieAST Type]
HasHaddock (LocatedA (IE GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (IE GhcPs) -> HdkA (LocatedA (IE GhcPs))
HasHaddock (LocatedL [LocatedA (IE GhcPs)]) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedL [LocatedA (IE GhcPs)] -> HdkA (LocatedL [LocatedA (IE GhcPs)])
type Anno (LocatedA (IE (GhcPass p))) |
Instance details Defined in GHC.Hs.ImpExp type Anno (LocatedA (IE (GhcPass p))) = SrcSpanAnnA
type Anno (IE (GhcPass p)) |
Instance details Defined in GHC.Hs.ImpExp type Anno (IE (GhcPass p)) = SrcSpanAnnA
type Anno [LocatedA (IE (GhcPass p))] |
Instance details Defined in GHC.Hs.ImpExp type Anno [LocatedA (IE (GhcPass p))] = SrcSpanAnnL

data HsExpr p #

A Haskell expression.

Constructors

HsVar (XVar p) (LIdP p) | Variable See Note [Located RdrNames]
HsUnboundVar (XUnboundVar p) RdrName | Unbound variable; also used for "holes" (_ or _x). Turned from HsVar to HsUnboundVar by the renamer, when it finds an out-of-scope variable or hole. The (XUnboundVar p) field becomes an HoleExprRef after typechecking; this is where the erroring expression will be written after solving. See Note [Holes] in GHC.Tc.Types.Constraint.
HsRecSel (XRecSel p) (FieldOcc p) | Variable pointing to record selector See Note [Non-overloaded record field selectors] and Note [Record selectors in the AST]
HsOverLabel (XOverLabel p) SourceText FastString | Overloaded label (Note [Overloaded labels] in GHC.OverloadedLabels) Note [Pragma source text] in GHC.Types.SourceText
HsIPVar (XIPVar p) HsIPName | Implicit parameter (not in use after typechecking)
HsOverLit (XOverLitE p) (HsOverLit p) | Overloaded literals
HsLit (XLitE p) (HsLit p) | Simple (non-overloaded) literals

HsLam (XLam p) (MatchGroup p (LHsExpr p))

Lambda abstraction. Currently always a single match

- `AnnKeywordId` : `AnnLam`, `AnnRarrow`,

HsLamCase (XLamCase p) LamCaseVariant (MatchGroup p (LHsExpr p))

Lambda-case

- `AnnKeywordId` : `AnnLam`, `AnnCase`,`AnnOpen`, `AnnClose`
- `AnnKeywordId` : `AnnLam`, `AnnCases`,`AnnOpen`, `AnnClose`

HsApp (XApp p) (LHsExpr p) (LHsExpr p) | Application

HsAppType (XAppTypeE p) (LHsExpr p) !(LHsToken "@" p) (LHsWcType (NoGhcTc p))

Visible type application

Explicit type argument; e.g f @Int x y NB: Has wildcards, but no implicit quantification

- `AnnKeywordId` : `AnnAt`,

OpApp (XOpApp p) (LHsExpr p) (LHsExpr p) (LHsExpr p) | Operator applications: NB Bracketed ops such as (+) come out as Vars.

NegApp (XNegApp p) (LHsExpr p) (SyntaxExpr p)

Negation operator. Contains the negated expression and the name of `negate`

- `AnnKeywordId` : `AnnMinus`

HsPar

- `AnnKeywordId` : `AnnOpen` `'('`, `AnnClose` `')'`

Fields

- (XPar p)
- !(LHsToken "(" p)
- (LHsExpr p)

  Parenthesised expr; see Note [Parens in HsSyn]

- !(LHsToken ")" p)

SectionL (XSectionL p) (LHsExpr p) (LHsExpr p) |
SectionR (XSectionR p) (LHsExpr p) (LHsExpr p) |

ExplicitTuple (XExplicitTuple p) [HsTupArg p] Boxity

Used for explicit tuples and sections thereof

- `AnnKeywordId` : `AnnOpen`, `AnnClose`

ExplicitSum (XExplicitSum p) ConTag SumWidth (LHsExpr p)

Used for unboxed sum types

- `AnnKeywordId` : `AnnOpen` `'(#'`, `AnnVbar`, `AnnClose` `'#)'`,

There will be multiple `AnnVbar`, (1 - alternative) before the expression, (arity - alternative) after it

HsCase (XCase p) (LHsExpr p) (MatchGroup p (LHsExpr p))

- `AnnKeywordId` : `AnnCase`, `AnnOf`,`AnnOpen` `'{'`, `AnnClose` `'}'`

HsIf (XIf p) (LHsExpr p) (LHsExpr p) (LHsExpr p)

- `AnnKeywordId` : `AnnIf`, `AnnSemi`, `AnnThen`,`AnnSemi`, `AnnElse`,

HsMultiIf (XMultiIf p) [LGRHS p (LHsExpr p)]

Multi-way if

- `AnnKeywordId` : `AnnIf` `AnnOpen`,`AnnClose`,

HsLet (XLet p) !(LHsToken "let" p) (HsLocalBinds p) !(LHsToken "in" p) (LHsExpr p)

let(rec)

- `AnnKeywordId` : `AnnLet`, `AnnOpen` `'{'`, `AnnClose` `'}'`,`AnnIn`

HsDo (XDo p) HsDoFlavour (XRec p [ExprLStmt p])

- `AnnKeywordId` : `AnnDo`, `AnnOpen`, `AnnSemi`, `AnnVbar`, `AnnClose`

ExplicitList (XExplicitList p) [LHsExpr p]

Syntactic list: [a,b,c,...]

- `AnnKeywordId` : `AnnOpen` `'['`, `AnnClose` `']'`

RecordCon

Record construction

- `AnnKeywordId` : `AnnOpen` `'{'`, `AnnDotdot`,`AnnClose` `'}'`

Fields

- rcon_ext :: XRecordCon p
- rcon_con :: XRec p (ConLikeP p)
- rcon_flds :: HsRecordBinds p

RecordUpd

Record update

- `AnnKeywordId` : `AnnOpen` `'{'`, `AnnDotdot`,`AnnClose` `'}'` 'GHC.Parser.Annotation.AnnComma, `AnnDot`, `AnnClose` `'}'`

Fields

- rupd_ext :: XRecordUpd p
- rupd_expr :: LHsExpr p
- rupd_flds :: LHsRecUpdFields p

HsGetField

Record field selection e.g `z.x`.

- `AnnKeywordId` : `AnnDot`

Fields

- gf_ext :: XGetField p
- gf_expr :: LHsExpr p
- gf_field :: XRec p (DotFieldOcc p)

HsProjection | Record field selector. e.g. `(.x)` or `(.x.y)` This case only arises when the OverloadedRecordDot langauge extensions is enabled. See Note [Record selectors in the AST].

Fields

- proj_ext :: XProjection p
- proj_flds :: NonEmpty (XRec p (DotFieldOcc p))

ExprWithTySig (XExprWithTySig p) (LHsExpr p) (LHsSigWcType (NoGhcTc p))

Expression with an explicit type signature. `e :: type`

- `AnnKeywordId` : `AnnDcolon`

ArithSeq (XArithSeq p) (Maybe (SyntaxExpr p)) (ArithSeqInfo p)

Arithmetic sequence

- `AnnKeywordId` : `AnnOpen` `'['`, `AnnComma`,`AnnDotdot`, `AnnClose` `']'`

HsTypedBracket (XTypedBracket p) (LHsExpr p)

- `AnnKeywordId` : `AnnOpen`, `AnnOpenE`,`AnnOpenEQ`, `AnnClose`,`AnnCloseQ`

HsUntypedBracket (XUntypedBracket p) (HsQuote p) |

HsTypedSplice (XTypedSplice p) (LHsExpr p)

- `AnnKeywordId` : `AnnOpen`, `AnnClose`

HsUntypedSplice (XUntypedSplice p) (HsUntypedSplice p) |

HsProc (XProc p) (LPat p) (LHsCmdTop p)

`proc` notation for Arrows

- `AnnKeywordId` : `AnnProc`, `AnnRarrow`

HsStatic (XStatic p) (LHsExpr p)

- `AnnKeywordId` : `AnnStatic`,

HsPragE (XPragE p) (HsPragE p) (LHsExpr p) |
XExpr !(XXExpr p) |

#### Instances

Instances details

NFData (HsExpr (GhcPass 'Renamed)) # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: HsExpr (GhcPass 'Renamed) -> () #
HiePass p => HasType (LocatedA (HsExpr (GhcPass p))) | This instance tries to construct `HieAST` nodes which include the type of the expression. It is not yet possible to do this efficiently for all expression forms, so we skip filling in the type for those inputs. See Note [Computing the type of every node in the tree]
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (HsExpr (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsExpr (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsExpr (GhcPass p)) -> HieM [HieAST Type]
DisambECP (HsExpr GhcPs) |

Instance details

Defined in GHC.Parser.PostProcess

Associated Types

type Body (HsExpr GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type Body (HsExpr GhcPs) = HsExpr
type InfixOp (HsExpr GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type InfixOp (HsExpr GhcPs) = HsExpr GhcPs
type FunArg (HsExpr GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type FunArg (HsExpr GhcPs) = HsExpr GhcPs

Methods

ecpFromCmd' :: LHsCmd GhcPs -> PV (LocatedA (HsExpr GhcPs)) #

ecpFromExp' :: LHsExpr GhcPs -> PV (LocatedA (HsExpr GhcPs)) #

mkHsProjUpdatePV :: SrcSpan -> Located [LocatedAn NoEpAnns (DotFieldOcc GhcPs)] -> LocatedA (HsExpr GhcPs) -> Bool -> [AddEpAnn] -> PV (LHsRecProj GhcPs (LocatedA (HsExpr GhcPs))) #

mkHsLamPV :: SrcSpan -> (EpAnnComments -> MatchGroup GhcPs (LocatedA (HsExpr GhcPs))) -> PV (LocatedA (HsExpr GhcPs)) #

mkHsLetPV :: SrcSpan -> LHsToken "let" GhcPs -> HsLocalBinds GhcPs -> LHsToken "in" GhcPs -> LocatedA (HsExpr GhcPs) -> PV (LocatedA (HsExpr GhcPs)) #

superInfixOp :: (DisambInfixOp (InfixOp (HsExpr GhcPs)) => PV (LocatedA (HsExpr GhcPs))) -> PV (LocatedA (HsExpr GhcPs)) #

mkHsOpAppPV :: SrcSpan -> LocatedA (HsExpr GhcPs) -> LocatedN (InfixOp (HsExpr GhcPs)) -> LocatedA (HsExpr GhcPs) -> PV (LocatedA (HsExpr GhcPs)) #

mkHsCasePV :: SrcSpan -> LHsExpr GhcPs -> LocatedL [LMatch GhcPs (LocatedA (HsExpr GhcPs))] -> EpAnnHsCase -> PV (LocatedA (HsExpr GhcPs)) #

mkHsLamCasePV :: SrcSpan -> LamCaseVariant -> LocatedL [LMatch GhcPs (LocatedA (HsExpr GhcPs))] -> [AddEpAnn] -> PV (LocatedA (HsExpr GhcPs)) #

superFunArg :: (DisambECP (FunArg (HsExpr GhcPs)) => PV (LocatedA (HsExpr GhcPs))) -> PV (LocatedA (HsExpr GhcPs)) #

mkHsAppPV :: SrcSpanAnnA -> LocatedA (HsExpr GhcPs) -> LocatedA (FunArg (HsExpr GhcPs)) -> PV (LocatedA (HsExpr GhcPs)) #

mkHsAppTypePV :: SrcSpanAnnA -> LocatedA (HsExpr GhcPs) -> LHsToken "@" GhcPs -> LHsType GhcPs -> PV (LocatedA (HsExpr GhcPs)) #

mkHsIfPV :: SrcSpan -> LHsExpr GhcPs -> Bool -> LocatedA (HsExpr GhcPs) -> Bool -> LocatedA (HsExpr GhcPs) -> AnnsIf -> PV (LocatedA (HsExpr GhcPs)) #

mkHsDoPV :: SrcSpan -> Maybe ModuleName -> LocatedL [LStmt GhcPs (LocatedA (HsExpr GhcPs))] -> AnnList -> PV (LocatedA (HsExpr GhcPs)) #

mkHsParPV :: SrcSpan -> LHsToken "(" GhcPs -> LocatedA (HsExpr GhcPs) -> LHsToken ")" GhcPs -> PV (LocatedA (HsExpr GhcPs)) #

mkHsVarPV :: LocatedN RdrName -> PV (LocatedA (HsExpr GhcPs)) #

mkHsLitPV :: Located (HsLit GhcPs) -> PV (Located (HsExpr GhcPs)) #

mkHsOverLitPV :: LocatedAn a (HsOverLit GhcPs) -> PV (LocatedAn a (HsExpr GhcPs)) #

mkHsWildCardPV :: SrcSpan -> PV (Located (HsExpr GhcPs)) #

mkHsTySigPV :: SrcSpanAnnA -> LocatedA (HsExpr GhcPs) -> LHsType GhcPs -> [AddEpAnn] -> PV (LocatedA (HsExpr GhcPs)) #

mkHsExplicitListPV :: SrcSpan -> [LocatedA (HsExpr GhcPs)] -> AnnList -> PV (LocatedA (HsExpr GhcPs)) #

mkHsSplicePV :: Located (HsUntypedSplice GhcPs) -> PV (Located (HsExpr GhcPs)) #

mkHsRecordPV :: Bool -> SrcSpan -> SrcSpan -> LocatedA (HsExpr GhcPs) -> ([Fbind (HsExpr GhcPs)], Maybe SrcSpan) -> [AddEpAnn] -> PV (LocatedA (HsExpr GhcPs)) #

mkHsNegAppPV :: SrcSpan -> LocatedA (HsExpr GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsExpr GhcPs)) #

mkHsSectionR_PV :: SrcSpan -> LocatedA (InfixOp (HsExpr GhcPs)) -> LocatedA (HsExpr GhcPs) -> PV (Located (HsExpr GhcPs)) #

mkHsViewPatPV :: SrcSpan -> LHsExpr GhcPs -> LocatedA (HsExpr GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsExpr GhcPs)) #

mkHsAsPatPV :: SrcSpan -> LocatedN RdrName -> LHsToken "@" GhcPs -> LocatedA (HsExpr GhcPs) -> PV (LocatedA (HsExpr GhcPs)) #

mkHsLazyPatPV :: SrcSpan -> LocatedA (HsExpr GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsExpr GhcPs)) #

mkHsBangPatPV :: SrcSpan -> LocatedA (HsExpr GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsExpr GhcPs)) #

mkSumOrTuplePV :: SrcSpanAnnA -> Boxity -> SumOrTuple (HsExpr GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsExpr GhcPs)) #

rejectPragmaPV :: LocatedA (HsExpr GhcPs) -> PV () #

DisambInfixOp (HsExpr GhcPs) |
Instance details Defined in GHC.Parser.PostProcess Methods mkHsVarOpPV :: LocatedN RdrName -> PV (LocatedN (HsExpr GhcPs)) # mkHsConOpPV :: LocatedN RdrName -> PV (LocatedN (HsExpr GhcPs)) # mkHsInfixHolePV :: SrcSpan -> (EpAnnComments -> EpAnn EpAnnUnboundVar) -> PV (Located (HsExpr GhcPs)) #
type Body (HsExpr GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type Body (HsExpr GhcPs) = HsExpr
type FunArg (HsExpr GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type FunArg (HsExpr GhcPs) = HsExpr GhcPs
type InfixOp (HsExpr GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type InfixOp (HsExpr GhcPs) = HsExpr GhcPs
type Anno (HsExpr (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (HsExpr (GhcPass p)) = SrcSpanAnnA
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] = SrcSpanAnnL
type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcSpanAnnA

data NoExtField #

A placeholder type for TTG extension points that are not currently unused to represent any particular value.

This should not be confused with `DataConCantHappen`, which are found in unused extension constructors and therefore should never be inhabited. In contrast, `NoExtField` is used in extension points (e.g., as the field of some constructor), so it must have an inhabitant to construct AST passes that manipulate fields with that extension point as their type.

Constructors

NoExtField |

#### Instances

Instances details

Data NoExtField |

Instance details

Defined in Language.Haskell.Syntax.Extension

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NoExtField -> c NoExtField #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NoExtField #

toConstr :: NoExtField -> Constr #

dataTypeOf :: NoExtField -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NoExtField) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NoExtField) #

gmapT :: (forall b. Data b => b -> b) -> NoExtField -> NoExtField #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NoExtField -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NoExtField -> r #

gmapQ :: (forall d. Data d => d -> u) -> NoExtField -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> NoExtField -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> NoExtField -> m NoExtField #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NoExtField -> m NoExtField #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NoExtField -> m NoExtField #

Eq NoExtField |
Instance details Defined in Language.Haskell.Syntax.Extension Methods (==) :: NoExtField -> NoExtField -> Bool # (/=) :: NoExtField -> NoExtField -> Bool #
Ord NoExtField |
Instance details Defined in Language.Haskell.Syntax.Extension Methods compare :: NoExtField -> NoExtField -> Ordering # (<) :: NoExtField -> NoExtField -> Bool # (<=) :: NoExtField -> NoExtField -> Bool # (>) :: NoExtField -> NoExtField -> Bool # (>=) :: NoExtField -> NoExtField -> Bool # max :: NoExtField -> NoExtField -> NoExtField # min :: NoExtField -> NoExtField -> NoExtField #
ToHie (Context (Located NoExtField)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (Located NoExtField) -> HieM [HieAST Type]

type family NoGhcTc p #

See Note [NoGhcTc] in GHC.Hs.Extension. It has to be in this module because it is used like an extension point (in the data definitions of types that should be parameter-agnostic.

#### Instances

Instances details

type NoGhcTc (GhcPass pass) | Marks that a field uses the GhcRn variant even when the pass parameter is GhcTc. Useful for storing HsTypes in GHC.Hs.Exprs, say, because HsType GhcTc should never occur. See Note [NoGhcTc]
Instance details Defined in GHC.Hs.Extension type NoGhcTc (GhcPass pass) = GhcPass (NoGhcTcPass pass)

type family XXIEWrappedName p #

#### Instances

Instances details

type XXIEWrappedName (GhcPass _1) |
Instance details Defined in GHC.Hs.ImpExp type XXIEWrappedName (GhcPass _1) = DataConCantHappen

type family XIEType p #

#### Instances

Instances details

type XIEType (GhcPass _1) |
Instance details Defined in GHC.Hs.ImpExp type XIEType (GhcPass _1) = EpaLocation

type family XIEPattern p #

#### Instances

Instances details

type XIEPattern (GhcPass _1) |
Instance details Defined in GHC.Hs.ImpExp type XIEPattern (GhcPass _1) = EpaLocation

type family XIEName p #

#### Instances

Instances details

type XIEName (GhcPass _1) |
Instance details Defined in GHC.Hs.ImpExp type XIEName (GhcPass _1) = NoExtField

type family XXIE x #

#### Instances

Instances details

type XXIE (GhcPass _1) |
Instance details Defined in GHC.Hs.ImpExp type XXIE (GhcPass _1) = DataConCantHappen

type family XIEDocNamed x #

#### Instances

Instances details

type XIEDocNamed (GhcPass _1) |
Instance details Defined in GHC.Hs.ImpExp type XIEDocNamed (GhcPass _1) = NoExtField

type family XIEDoc x #

#### Instances

Instances details

type XIEDoc (GhcPass _1) |
Instance details Defined in GHC.Hs.ImpExp type XIEDoc (GhcPass _1) = NoExtField

type family XIEGroup x #

#### Instances

Instances details

type XIEGroup (GhcPass _1) |
Instance details Defined in GHC.Hs.ImpExp type XIEGroup (GhcPass _1) = NoExtField

type family XIEModuleContents x #

#### Instances

Instances details

type XIEModuleContents GhcPs |
Instance details Defined in GHC.Hs.ImpExp type XIEModuleContents GhcPs = (Maybe (LocatedP (WarningTxt GhcPs)), EpAnn [AddEpAnn])
type XIEModuleContents GhcRn |
Instance details Defined in GHC.Hs.ImpExp type XIEModuleContents GhcRn = Maybe (LocatedP (WarningTxt GhcRn))
type XIEModuleContents GhcTc |
Instance details Defined in GHC.Hs.ImpExp type XIEModuleContents GhcTc = NoExtField

type family XIEThingWith x #

#### Instances

Instances details

type XIEThingWith GhcPs |
Instance details Defined in GHC.Hs.ImpExp type XIEThingWith GhcPs = (Maybe (LocatedP (WarningTxt GhcPs)), EpAnn [AddEpAnn])
type XIEThingWith GhcRn |
Instance details Defined in GHC.Hs.ImpExp type XIEThingWith GhcRn = (Maybe (LocatedP (WarningTxt GhcRn)), EpAnn [AddEpAnn])
type XIEThingWith GhcTc |
Instance details Defined in GHC.Hs.ImpExp type XIEThingWith GhcTc = EpAnn [AddEpAnn]

type family XIEThingAll x #

#### Instances

Instances details

type XIEThingAll GhcPs |
Instance details Defined in GHC.Hs.ImpExp type XIEThingAll GhcPs = (Maybe (LocatedP (WarningTxt GhcPs)), EpAnn [AddEpAnn])
type XIEThingAll GhcRn |
Instance details Defined in GHC.Hs.ImpExp type XIEThingAll GhcRn = (Maybe (LocatedP (WarningTxt GhcRn)), EpAnn [AddEpAnn])
type XIEThingAll GhcTc |
Instance details Defined in GHC.Hs.ImpExp type XIEThingAll GhcTc = EpAnn [AddEpAnn]

type family XIEThingAbs x #

#### Instances

Instances details

type XIEThingAbs GhcPs |
Instance details Defined in GHC.Hs.ImpExp type XIEThingAbs GhcPs = (Maybe (LocatedP (WarningTxt GhcPs)), EpAnn [AddEpAnn])
type XIEThingAbs GhcRn |
Instance details Defined in GHC.Hs.ImpExp type XIEThingAbs GhcRn = (Maybe (LocatedP (WarningTxt GhcRn)), EpAnn [AddEpAnn])
type XIEThingAbs GhcTc |
Instance details Defined in GHC.Hs.ImpExp type XIEThingAbs GhcTc = EpAnn [AddEpAnn]

type family XIEVar x #

#### Instances

Instances details

type XIEVar GhcPs |
Instance details Defined in GHC.Hs.ImpExp type XIEVar GhcPs = Maybe (LocatedP (WarningTxt GhcPs))
type XIEVar GhcRn |
Instance details Defined in GHC.Hs.ImpExp type XIEVar GhcRn = Maybe (LocatedP (WarningTxt GhcRn))
type XIEVar GhcTc |
Instance details Defined in GHC.Hs.ImpExp type XIEVar GhcTc = NoExtField

type family ImportDeclPkgQual x #

#### Instances

Instances details

type ImportDeclPkgQual GhcPs |
Instance details Defined in GHC.Hs.ImpExp type ImportDeclPkgQual GhcPs = RawPkgQual
type ImportDeclPkgQual GhcRn |
Instance details Defined in GHC.Hs.ImpExp type ImportDeclPkgQual GhcRn = PkgQual
type ImportDeclPkgQual GhcTc |
Instance details Defined in GHC.Hs.ImpExp type ImportDeclPkgQual GhcTc = PkgQual

type family XXImportDecl x #

#### Instances

Instances details

type XXImportDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.ImpExp type XXImportDecl (GhcPass _1) = DataConCantHappen

type family XCImportDecl x #

#### Instances

Instances details

type XCImportDecl GhcPs |
Instance details Defined in GHC.Hs.ImpExp type XCImportDecl GhcPs = XImportDeclPass
type XCImportDecl GhcRn |
Instance details Defined in GHC.Hs.ImpExp type XCImportDecl GhcRn = XImportDeclPass
type XCImportDecl GhcTc |
Instance details Defined in GHC.Hs.ImpExp type XCImportDecl GhcTc = DataConCantHappen

type family XXFieldOcc x #

#### Instances

Instances details

type XXFieldOcc (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXFieldOcc (GhcPass _1) = DataConCantHappen

type family XCFieldOcc x #

#### Instances

Instances details

type XCFieldOcc GhcPs |
Instance details Defined in GHC.Hs.Type type XCFieldOcc GhcPs = NoExtField
type XCFieldOcc GhcRn |
Instance details Defined in GHC.Hs.Type type XCFieldOcc GhcRn = Name
type XCFieldOcc GhcTc |
Instance details Defined in GHC.Hs.Type type XCFieldOcc GhcTc = Id

type family XXConDeclField x #

#### Instances

Instances details

type XXConDeclField (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXConDeclField (GhcPass _1) = DataConCantHappen

type family XConDeclField x #

#### Instances

Instances details

type XConDeclField (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XConDeclField (GhcPass _1) = EpAnn [AddEpAnn]

data ConDeclField pass #

Constructor Declaration Field

Constructors

ConDeclField |

Fields

- cd_fld_ext :: XConDeclField pass
- cd_fld_names :: [LFieldOcc pass]

  See Note [ConDeclField pass]

- cd_fld_type :: LBangType pass
- cd_fld_doc :: Maybe (LHsDoc pass)
  - `AnnKeywordId` : `AnnDcolon`

XConDeclField !(XXConDeclField pass) |

#### Instances

Instances details

ToHie (LocatedA (ConDeclField GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ConDeclField GhcRn) -> HieM [HieAST Type]
ToHie (LocatedL [LocatedA (ConDeclField GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedL [LocatedA (ConDeclField GhcRn)] -> HieM [HieAST Type]
type Anno (ConDeclField (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (ConDeclField (GhcPass p)) = SrcSpanAnnA
type Anno [LocatedA (ConDeclField (GhcPass _1))] |
Instance details Defined in GHC.Hs.Decls type Anno [LocatedA (ConDeclField (GhcPass _1))] = SrcSpanAnnL

type family XXTyVarBndr x #

#### Instances

Instances details

type XXTyVarBndr (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXTyVarBndr (GhcPass _1) = DataConCantHappen

type family XKindedTyVar x #

#### Instances

Instances details

type XKindedTyVar (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XKindedTyVar (GhcPass _1) = EpAnn [AddEpAnn]

type family XUserTyVar x #

#### Instances

Instances details

type XUserTyVar (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XUserTyVar (GhcPass _1) = EpAnn [AddEpAnn]

type family XXHsForAllTelescope x #

#### Instances

Instances details

type XXHsForAllTelescope (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXHsForAllTelescope (GhcPass _1) = DataConCantHappen

type family XHsForAllInvis x #

#### Instances

Instances details

type XHsForAllInvis (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XHsForAllInvis (GhcPass _1) = EpAnnForallTy

type family XHsForAllVis x #

#### Instances

Instances details

type XHsForAllVis (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XHsForAllVis (GhcPass _1) = EpAnnForallTy

type family XXTyLit x #

#### Instances

Instances details

type XXTyLit (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXTyLit (GhcPass _1) = DataConCantHappen

type family XCharTy x #

#### Instances

Instances details

type XCharTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XCharTy (GhcPass _1) = SourceText

type family XStrTy x #

#### Instances

Instances details

type XStrTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XStrTy (GhcPass _1) = SourceText

type family XNumTy x #

#### Instances

Instances details

type XNumTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XNumTy (GhcPass _1) = SourceText

type family XXType x #

#### Instances

Instances details

type XXType (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXType (GhcPass _1) = HsCoreTy

type family XWildCardTy x #

#### Instances

Instances details

type XWildCardTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XWildCardTy (GhcPass _1) = NoExtField

type family XTyLit x #

#### Instances

Instances details

type XTyLit (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XTyLit (GhcPass _1) = NoExtField

data HsTyLit pass #

Haskell Type Literal

Constructors

HsNumTy (XNumTy pass) Integer |
HsStrTy (XStrTy pass) FastString |
HsCharTy (XCharTy pass) Char |
XTyLit !(XXTyLit pass) |

type family XExplicitTupleTy x #

#### Instances

Instances details

type XExplicitTupleTy GhcPs |
Instance details Defined in GHC.Hs.Type type XExplicitTupleTy GhcPs = EpAnn [AddEpAnn]
type XExplicitTupleTy GhcRn |
Instance details Defined in GHC.Hs.Type type XExplicitTupleTy GhcRn = NoExtField
type XExplicitTupleTy GhcTc |
Instance details Defined in GHC.Hs.Type type XExplicitTupleTy GhcTc = [Kind]

type family XExplicitListTy x #

#### Instances

Instances details

type XExplicitListTy GhcPs |
Instance details Defined in GHC.Hs.Type type XExplicitListTy GhcPs = EpAnn [AddEpAnn]
type XExplicitListTy GhcRn |
Instance details Defined in GHC.Hs.Type type XExplicitListTy GhcRn = NoExtField
type XExplicitListTy GhcTc |
Instance details Defined in GHC.Hs.Type type XExplicitListTy GhcTc = Kind

type family XRecTy x #

#### Instances

Instances details

type XRecTy GhcPs |
Instance details Defined in GHC.Hs.Type type XRecTy GhcPs = EpAnn AnnList
type XRecTy GhcRn |
Instance details Defined in GHC.Hs.Type type XRecTy GhcRn = NoExtField
type XRecTy GhcTc |
Instance details Defined in GHC.Hs.Type type XRecTy GhcTc = NoExtField

type family XBangTy x #

#### Instances

Instances details

type XBangTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XBangTy (GhcPass _1) = EpAnn [AddEpAnn]

type family XDocTy x #

#### Instances

Instances details

type XDocTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XDocTy (GhcPass _1) = EpAnn [AddEpAnn]

type family XSpliceTy x #

#### Instances

Instances details

type XSpliceTy GhcPs |
Instance details Defined in GHC.Hs.Type type XSpliceTy GhcPs = NoExtField
type XSpliceTy GhcRn |
Instance details Defined in GHC.Hs.Type type XSpliceTy GhcRn = HsUntypedSpliceResult (LHsType GhcRn)
type XSpliceTy GhcTc |
Instance details Defined in GHC.Hs.Type type XSpliceTy GhcTc = Kind

type family XKindSig x #

#### Instances

Instances details

type XKindSig (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XKindSig (GhcPass _1) = EpAnn [AddEpAnn]

type family XStarTy x #

#### Instances

Instances details

type XStarTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XStarTy (GhcPass _1) = NoExtField

type family XIParamTy x #

#### Instances

Instances details

type XIParamTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XIParamTy (GhcPass _1) = EpAnn [AddEpAnn]

type family XParTy x #

#### Instances

Instances details

type XParTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XParTy (GhcPass _1) = EpAnn AnnParen

type family XOpTy x #

#### Instances

Instances details

type XOpTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XOpTy (GhcPass _1) = EpAnn [AddEpAnn]

type family XSumTy x #

#### Instances

Instances details

type XSumTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XSumTy (GhcPass _1) = EpAnn AnnParen

type family XTupleTy x #

#### Instances

Instances details

type XTupleTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XTupleTy (GhcPass _1) = EpAnn AnnParen

type family XListTy x #

#### Instances

Instances details

type XListTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XListTy (GhcPass _1) = EpAnn AnnParen

type family XFunTy x #

#### Instances

Instances details

type XFunTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XFunTy (GhcPass _1) = EpAnnCO

type family XAppKindTy x #

#### Instances

Instances details

type XAppKindTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XAppKindTy (GhcPass _1) = NoExtField

type family XAppTy x #

#### Instances

Instances details

type XAppTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XAppTy (GhcPass _1) = NoExtField

type family XTyVar x #

#### Instances

Instances details

type XTyVar (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XTyVar (GhcPass _1) = EpAnn [AddEpAnn]

type family XQualTy x #

#### Instances

Instances details

type XQualTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XQualTy (GhcPass _1) = NoExtField

type family XForAllTy x #

#### Instances

Instances details

type XForAllTy (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XForAllTy (GhcPass _1) = NoExtField

type family XXHsPatSigType x #

#### Instances

Instances details

type XXHsPatSigType (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXHsPatSigType (GhcPass _1) = DataConCantHappen

type family XHsPS x #

#### Instances

Instances details

type XHsPS GhcPs |
Instance details Defined in GHC.Hs.Type type XHsPS GhcPs = EpAnnCO
type XHsPS GhcRn |
Instance details Defined in GHC.Hs.Type type XHsPS GhcRn = HsPSRn
type XHsPS GhcTc |
Instance details Defined in GHC.Hs.Type type XHsPS GhcTc = HsPSRn

type family XXHsWildCardBndrs x b #

#### Instances

Instances details

type XXHsWildCardBndrs (GhcPass _1) _2 |
Instance details Defined in GHC.Hs.Type type XXHsWildCardBndrs (GhcPass _1) _2 = DataConCantHappen

type family XHsWC x b #

#### Instances

Instances details

type XHsWC GhcPs b |
Instance details Defined in GHC.Hs.Type type XHsWC GhcPs b = NoExtField
type XHsWC GhcRn b |
Instance details Defined in GHC.Hs.Type type XHsWC GhcRn b = [Name]
type XHsWC GhcTc b |
Instance details Defined in GHC.Hs.Type type XHsWC GhcTc b = [Name]

type family XXHsSigType x #

#### Instances

Instances details

type XXHsSigType (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXHsSigType (GhcPass _1) = DataConCantHappen

type family XHsSig x #

#### Instances

Instances details

type XHsSig (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XHsSig (GhcPass _1) = NoExtField

type family XXHsOuterTyVarBndrs x #

#### Instances

Instances details

type XXHsOuterTyVarBndrs (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXHsOuterTyVarBndrs (GhcPass _1) = DataConCantHappen

type family XHsOuterExplicit x flag #

#### Instances

Instances details

type XHsOuterExplicit GhcPs _1 |
Instance details Defined in GHC.Hs.Type type XHsOuterExplicit GhcPs _1 = EpAnnForallTy
type XHsOuterExplicit GhcRn _1 |
Instance details Defined in GHC.Hs.Type type XHsOuterExplicit GhcRn _1 = NoExtField
type XHsOuterExplicit GhcTc flag |
Instance details Defined in GHC.Hs.Type type XHsOuterExplicit GhcTc flag = [VarBndr TyVar flag]

type family XHsOuterImplicit x #

#### Instances

Instances details

type XHsOuterImplicit GhcPs |
Instance details Defined in GHC.Hs.Type type XHsOuterImplicit GhcPs = NoExtField
type XHsOuterImplicit GhcRn |
Instance details Defined in GHC.Hs.Type type XHsOuterImplicit GhcRn = [Name]
type XHsOuterImplicit GhcTc |
Instance details Defined in GHC.Hs.Type type XHsOuterImplicit GhcTc = [TyVar]

type family XXLHsQTyVars x #

#### Instances

Instances details

type XXLHsQTyVars (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXLHsQTyVars (GhcPass _1) = DataConCantHappen

type family XHsQTvs x #

#### Instances

Instances details

type XHsQTvs GhcPs |
Instance details Defined in GHC.Hs.Type type XHsQTvs GhcPs = NoExtField
type XHsQTvs GhcRn |
Instance details Defined in GHC.Hs.Type type XHsQTvs GhcRn = HsQTvsRn
type XHsQTvs GhcTc |
Instance details Defined in GHC.Hs.Type type XHsQTvs GhcTc = HsQTvsRn

type family XHsFieldBind x #

#### Instances

Instances details

type XHsFieldBind _1 |
Instance details Defined in GHC.Hs.Pat type XHsFieldBind _1 = EpAnn [AddEpAnn]

type family XXPat x #

#### Instances

Instances details

type XXPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XXPat GhcPs = DataConCantHappen
type XXPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XXPat GhcRn = HsPatExpansion (Pat GhcRn) (Pat GhcRn)
type XXPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XXPat GhcTc = XXPatGhcTc

type family XCoPat x #

type family XSigPat x #

#### Instances

Instances details

type XSigPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XSigPat GhcPs = EpAnn [AddEpAnn]
type XSigPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XSigPat GhcRn = NoExtField
type XSigPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XSigPat GhcTc = Type

type family XNPlusKPat x #

#### Instances

Instances details

type XNPlusKPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XNPlusKPat GhcPs = EpAnn EpaLocation
type XNPlusKPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XNPlusKPat GhcRn = NoExtField
type XNPlusKPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XNPlusKPat GhcTc = Type

type family XNPat x #

#### Instances

Instances details

type XNPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XNPat GhcPs = EpAnn [AddEpAnn]
type XNPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XNPat GhcRn = EpAnn [AddEpAnn]
type XNPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XNPat GhcTc = Type

type family XLitPat x #

#### Instances

Instances details

type XLitPat (GhcPass _1) |
Instance details Defined in GHC.Hs.Pat type XLitPat (GhcPass _1) = NoExtField

type family XSplicePat x #

#### Instances

Instances details

type XSplicePat GhcPs |
Instance details Defined in GHC.Hs.Pat type XSplicePat GhcPs = NoExtField
type XSplicePat GhcRn |
Instance details Defined in GHC.Hs.Pat type XSplicePat GhcRn = HsUntypedSpliceResult (Pat GhcRn)
type XSplicePat GhcTc |
Instance details Defined in GHC.Hs.Pat type XSplicePat GhcTc = DataConCantHappen

type family XViewPat x #

#### Instances

Instances details

type XViewPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XViewPat GhcPs = EpAnn [AddEpAnn]
type XViewPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XViewPat GhcRn = Maybe (HsExpr GhcRn)
type XViewPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XViewPat GhcTc = Type

type family XConPat x #

#### Instances

Instances details

type XConPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XConPat GhcPs = EpAnn [AddEpAnn]
type XConPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XConPat GhcRn = NoExtField
type XConPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XConPat GhcTc = ConPatTc

type family XSumPat x #

#### Instances

Instances details

type XSumPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XSumPat GhcPs = EpAnn EpAnnSumPat
type XSumPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XSumPat GhcRn = NoExtField
type XSumPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XSumPat GhcTc = [Type]

type family XTuplePat x #

#### Instances

Instances details

type XTuplePat GhcPs |
Instance details Defined in GHC.Hs.Pat type XTuplePat GhcPs = EpAnn [AddEpAnn]
type XTuplePat GhcRn |
Instance details Defined in GHC.Hs.Pat type XTuplePat GhcRn = NoExtField
type XTuplePat GhcTc |
Instance details Defined in GHC.Hs.Pat type XTuplePat GhcTc = [Type]

type family XListPat x #

#### Instances

Instances details

type XListPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XListPat GhcPs = EpAnn AnnList
type XListPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XListPat GhcRn = NoExtField
type XListPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XListPat GhcTc = Type

type family XBangPat x #

#### Instances

Instances details

type XBangPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XBangPat GhcPs = EpAnn [AddEpAnn]
type XBangPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XBangPat GhcRn = NoExtField
type XBangPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XBangPat GhcTc = NoExtField

type family XParPat x #

#### Instances

Instances details

type XParPat (GhcPass _1) |
Instance details Defined in GHC.Hs.Pat type XParPat (GhcPass _1) = EpAnnCO

type family XAsPat x #

#### Instances

Instances details

type XAsPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XAsPat GhcPs = EpAnnCO
type XAsPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XAsPat GhcRn = NoExtField
type XAsPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XAsPat GhcTc = NoExtField

type family XLazyPat x #

#### Instances

Instances details

type XLazyPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XLazyPat GhcPs = EpAnn [AddEpAnn]
type XLazyPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XLazyPat GhcRn = NoExtField
type XLazyPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XLazyPat GhcTc = NoExtField

type family XVarPat x #

#### Instances

Instances details

type XVarPat (GhcPass _1) |
Instance details Defined in GHC.Hs.Pat type XVarPat (GhcPass _1) = NoExtField

type family XWildPat x #

#### Instances

Instances details

type XWildPat GhcPs |
Instance details Defined in GHC.Hs.Pat type XWildPat GhcPs = NoExtField
type XWildPat GhcRn |
Instance details Defined in GHC.Hs.Pat type XWildPat GhcRn = NoExtField
type XWildPat GhcTc |
Instance details Defined in GHC.Hs.Pat type XWildPat GhcTc = Type

type family XXOverLit x #

#### Instances

Instances details

type XXOverLit (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XXOverLit (GhcPass _1) = DataConCantHappen

type family XOverLit x #

#### Instances

Instances details

type XOverLit GhcPs |
Instance details Defined in GHC.Hs.Lit type XOverLit GhcPs = NoExtField
type XOverLit GhcRn |
Instance details Defined in GHC.Hs.Lit type XOverLit GhcRn = OverLitRn
type XOverLit GhcTc |
Instance details Defined in GHC.Hs.Lit type XOverLit GhcTc = OverLitTc

data HsOverLit p #

Haskell Overloaded Literal

Constructors

OverLit |

Fields

- ol_ext :: XOverLit p
- ol_val :: OverLitVal

XOverLit !(XXOverLit p) |

#### Instances

Instances details

Eq (XXOverLit p) => Eq (HsOverLit p) |
Instance details Defined in Language.Haskell.Syntax.Lit Methods (==) :: HsOverLit p -> HsOverLit p -> Bool # (/=) :: HsOverLit p -> HsOverLit p -> Bool #
Ord (XXOverLit p) => Ord (HsOverLit p) |
Instance details Defined in Language.Haskell.Syntax.Lit Methods compare :: HsOverLit p -> HsOverLit p -> Ordering # (<) :: HsOverLit p -> HsOverLit p -> Bool # (<=) :: HsOverLit p -> HsOverLit p -> Bool # (>) :: HsOverLit p -> HsOverLit p -> Bool # (>=) :: HsOverLit p -> HsOverLit p -> Bool # max :: HsOverLit p -> HsOverLit p -> HsOverLit p # min :: HsOverLit p -> HsOverLit p -> HsOverLit p #
type Anno (HsOverLit (GhcPass p)) |
Instance details Defined in GHC.Hs.Pat type Anno (HsOverLit (GhcPass p)) = SrcAnn NoEpAnns

type family XXLit x #

#### Instances

Instances details

type XXLit (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XXLit (GhcPass _1) = DataConCantHappen

type family XHsDoublePrim x #

#### Instances

Instances details

type XHsDoublePrim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsDoublePrim (GhcPass _1) = NoExtField

type family XHsFloatPrim x #

#### Instances

Instances details

type XHsFloatPrim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsFloatPrim (GhcPass _1) = NoExtField

type family XHsRat x #

#### Instances

Instances details

type XHsRat (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsRat (GhcPass _1) = NoExtField

type family XHsInteger x #

#### Instances

Instances details

type XHsInteger (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsInteger (GhcPass _1) = SourceText

type family XHsWord64Prim x #

#### Instances

Instances details

type XHsWord64Prim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsWord64Prim (GhcPass _1) = SourceText

type family XHsWord32Prim x #

#### Instances

Instances details

type XHsWord32Prim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsWord32Prim (GhcPass _1) = SourceText

type family XHsWord16Prim x #

#### Instances

Instances details

type XHsWord16Prim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsWord16Prim (GhcPass _1) = SourceText

type family XHsWord8Prim x #

#### Instances

Instances details

type XHsWord8Prim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsWord8Prim (GhcPass _1) = SourceText

type family XHsInt64Prim x #

#### Instances

Instances details

type XHsInt64Prim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsInt64Prim (GhcPass _1) = SourceText

type family XHsInt32Prim x #

#### Instances

Instances details

type XHsInt32Prim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsInt32Prim (GhcPass _1) = SourceText

type family XHsInt16Prim x #

#### Instances

Instances details

type XHsInt16Prim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsInt16Prim (GhcPass _1) = SourceText

type family XHsInt8Prim x #

#### Instances

Instances details

type XHsInt8Prim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsInt8Prim (GhcPass _1) = SourceText

type family XHsWordPrim x #

#### Instances

Instances details

type XHsWordPrim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsWordPrim (GhcPass _1) = SourceText

type family XHsIntPrim x #

#### Instances

Instances details

type XHsIntPrim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsIntPrim (GhcPass _1) = SourceText

type family XHsInt x #

#### Instances

Instances details

type XHsInt (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsInt (GhcPass _1) = NoExtField

type family XHsStringPrim x #

#### Instances

Instances details

type XHsStringPrim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsStringPrim (GhcPass _1) = SourceText

type family XHsString x #

#### Instances

Instances details

type XHsString (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsString (GhcPass _1) = SourceText

type family XHsCharPrim x #

#### Instances

Instances details

type XHsCharPrim (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsCharPrim (GhcPass _1) = SourceText

type family XHsChar x #

#### Instances

Instances details

type XHsChar (GhcPass _1) |
Instance details Defined in GHC.Hs.Lit type XHsChar (GhcPass _1) = SourceText

type family XXApplicativeArg x #

#### Instances

Instances details

type XXApplicativeArg (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XXApplicativeArg (GhcPass _1) = DataConCantHappen

type family XApplicativeArgMany x #

#### Instances

Instances details

type XApplicativeArgMany (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XApplicativeArgMany (GhcPass _1) = NoExtField

type family XApplicativeArgOne x #

#### Instances

Instances details

type XApplicativeArgOne GhcPs |
Instance details Defined in GHC.Hs.Expr type XApplicativeArgOne GhcPs = NoExtField
type XApplicativeArgOne GhcRn |
Instance details Defined in GHC.Hs.Expr type XApplicativeArgOne GhcRn = FailOperator GhcRn
type XApplicativeArgOne GhcTc |
Instance details Defined in GHC.Hs.Expr type XApplicativeArgOne GhcTc = FailOperator GhcTc

type family XXParStmtBlock x x' #

#### Instances

Instances details

type XXParStmtBlock (GhcPass pL) (GhcPass pR) |
Instance details Defined in GHC.Hs.Expr type XXParStmtBlock (GhcPass pL) (GhcPass pR) = DataConCantHappen

type family XParStmtBlock x x' #

#### Instances

Instances details

type XParStmtBlock (GhcPass pL) (GhcPass pR) |
Instance details Defined in GHC.Hs.Expr type XParStmtBlock (GhcPass pL) (GhcPass pR) = NoExtField

data ParStmtBlock idL idR #

Parenthesised Statement Block

Constructors

ParStmtBlock (XParStmtBlock idL idR) [ExprLStmt idL] [IdP idR] (SyntaxExpr idR) |
XParStmtBlock !(XXParStmtBlock idL idR) |

type family XXCmd x #

#### Instances

Instances details

type XXCmd GhcPs |
Instance details Defined in GHC.Hs.Expr type XXCmd GhcPs = DataConCantHappen
type XXCmd GhcRn |
Instance details Defined in GHC.Hs.Expr type XXCmd GhcRn = DataConCantHappen
type XXCmd GhcTc |
Instance details Defined in GHC.Hs.Expr type XXCmd GhcTc = HsWrap HsCmd

type family XCmdWrap x #

#### Instances

Instances details

type XCmdWrap (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XCmdWrap (GhcPass _1) = NoExtField

type family XCmdDo x #

#### Instances

Instances details

type XCmdDo GhcPs |
Instance details Defined in GHC.Hs.Expr type XCmdDo GhcPs = EpAnn AnnList
type XCmdDo GhcRn |
Instance details Defined in GHC.Hs.Expr type XCmdDo GhcRn = NoExtField
type XCmdDo GhcTc |
Instance details Defined in GHC.Hs.Expr type XCmdDo GhcTc = Type

type family XCmdLet x #

#### Instances

Instances details

type XCmdLet GhcPs |
Instance details Defined in GHC.Hs.Expr type XCmdLet GhcPs = EpAnnCO
type XCmdLet GhcRn |
Instance details Defined in GHC.Hs.Expr type XCmdLet GhcRn = NoExtField
type XCmdLet GhcTc |
Instance details Defined in GHC.Hs.Expr type XCmdLet GhcTc = NoExtField

type family XCmdIf x #

#### Instances

Instances details

type XCmdIf GhcPs |
Instance details Defined in GHC.Hs.Expr type XCmdIf GhcPs = EpAnn AnnsIf
type XCmdIf GhcRn |
Instance details Defined in GHC.Hs.Expr type XCmdIf GhcRn = NoExtField
type XCmdIf GhcTc |
Instance details Defined in GHC.Hs.Expr type XCmdIf GhcTc = NoExtField

type family XCmdLamCase x #

#### Instances

Instances details

type XCmdLamCase (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XCmdLamCase (GhcPass _1) = EpAnn [AddEpAnn]

type family XCmdCase x #

#### Instances

Instances details

type XCmdCase GhcPs |
Instance details Defined in GHC.Hs.Expr type XCmdCase GhcPs = EpAnn EpAnnHsCase
type XCmdCase GhcRn |
Instance details Defined in GHC.Hs.Expr type XCmdCase GhcRn = NoExtField
type XCmdCase GhcTc |
Instance details Defined in GHC.Hs.Expr type XCmdCase GhcTc = NoExtField

type family XCmdPar x #

#### Instances

Instances details

type XCmdPar (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XCmdPar (GhcPass _1) = EpAnnCO

type family XCmdLam x #

#### Instances

Instances details

type XCmdLam (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XCmdLam (GhcPass _1) = NoExtField

type family XCmdApp x #

#### Instances

Instances details

type XCmdApp (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XCmdApp (GhcPass _1) = EpAnnCO

type family XCmdArrForm x #

#### Instances

Instances details

type XCmdArrForm GhcPs |
Instance details Defined in GHC.Hs.Expr type XCmdArrForm GhcPs = EpAnn AnnList
type XCmdArrForm GhcRn |
Instance details Defined in GHC.Hs.Expr type XCmdArrForm GhcRn = NoExtField
type XCmdArrForm GhcTc |
Instance details Defined in GHC.Hs.Expr type XCmdArrForm GhcTc = NoExtField

type family XCmdArrApp x #

#### Instances

Instances details

type XCmdArrApp GhcPs |
Instance details Defined in GHC.Hs.Expr type XCmdArrApp GhcPs = EpAnn AddEpAnn
type XCmdArrApp GhcRn |
Instance details Defined in GHC.Hs.Expr type XCmdArrApp GhcRn = NoExtField
type XCmdArrApp GhcTc |
Instance details Defined in GHC.Hs.Expr type XCmdArrApp GhcTc = Type

type family XXStmtLR x x' b #

#### Instances

Instances details

type XXStmtLR (GhcPass _1) (GhcPass _2) b |
Instance details Defined in GHC.Hs.Expr type XXStmtLR (GhcPass _1) (GhcPass _2) b = DataConCantHappen

type family XRecStmt x x' b #

#### Instances

Instances details

type XRecStmt (GhcPass _1) GhcPs b |
Instance details Defined in GHC.Hs.Expr type XRecStmt (GhcPass _1) GhcPs b = EpAnn AnnList
type XRecStmt (GhcPass _1) GhcRn b |
Instance details Defined in GHC.Hs.Expr type XRecStmt (GhcPass _1) GhcRn b = NoExtField
type XRecStmt (GhcPass _1) GhcTc b |
Instance details Defined in GHC.Hs.Expr type XRecStmt (GhcPass _1) GhcTc b = RecStmtTc

type family XTransStmt x x' b #

#### Instances

Instances details

type XTransStmt (GhcPass _1) GhcPs b |
Instance details Defined in GHC.Hs.Expr type XTransStmt (GhcPass _1) GhcPs b = EpAnn [AddEpAnn]
type XTransStmt (GhcPass _1) GhcRn b |
Instance details Defined in GHC.Hs.Expr type XTransStmt (GhcPass _1) GhcRn b = NoExtField
type XTransStmt (GhcPass _1) GhcTc b |
Instance details Defined in GHC.Hs.Expr type XTransStmt (GhcPass _1) GhcTc b = Type

type family XParStmt x x' b #

#### Instances

Instances details

type XParStmt (GhcPass _1) GhcPs b |
Instance details Defined in GHC.Hs.Expr type XParStmt (GhcPass _1) GhcPs b = NoExtField
type XParStmt (GhcPass _1) GhcRn b |
Instance details Defined in GHC.Hs.Expr type XParStmt (GhcPass _1) GhcRn b = NoExtField
type XParStmt (GhcPass _1) GhcTc b |
Instance details Defined in GHC.Hs.Expr type XParStmt (GhcPass _1) GhcTc b = Type

type family XLetStmt x x' b #

#### Instances

Instances details

type XLetStmt (GhcPass _1) (GhcPass _2) b |
Instance details Defined in GHC.Hs.Expr type XLetStmt (GhcPass _1) (GhcPass _2) b = EpAnn [AddEpAnn]

type family XBodyStmt x x' b #

#### Instances

Instances details

type XBodyStmt (GhcPass _1) GhcPs b |
Instance details Defined in GHC.Hs.Expr type XBodyStmt (GhcPass _1) GhcPs b = NoExtField
type XBodyStmt (GhcPass _1) GhcRn b |
Instance details Defined in GHC.Hs.Expr type XBodyStmt (GhcPass _1) GhcRn b = NoExtField
type XBodyStmt (GhcPass _1) GhcTc b |
Instance details Defined in GHC.Hs.Expr type XBodyStmt (GhcPass _1) GhcTc b = Type

type family XApplicativeStmt x x' b #

#### Instances

Instances details

type XApplicativeStmt (GhcPass _1) GhcPs b |
Instance details Defined in GHC.Hs.Expr type XApplicativeStmt (GhcPass _1) GhcPs b = NoExtField
type XApplicativeStmt (GhcPass _1) GhcRn b |
Instance details Defined in GHC.Hs.Expr type XApplicativeStmt (GhcPass _1) GhcRn b = NoExtField
type XApplicativeStmt (GhcPass _1) GhcTc b |
Instance details Defined in GHC.Hs.Expr type XApplicativeStmt (GhcPass _1) GhcTc b = Type

type family XBindStmt x x' b #

#### Instances

Instances details

type XBindStmt (GhcPass _1) GhcPs b |
Instance details Defined in GHC.Hs.Expr type XBindStmt (GhcPass _1) GhcPs b = EpAnn [AddEpAnn]
type XBindStmt (GhcPass _1) GhcRn b |
Instance details Defined in GHC.Hs.Expr type XBindStmt (GhcPass _1) GhcRn b = XBindStmtRn
type XBindStmt (GhcPass _1) GhcTc b |
Instance details Defined in GHC.Hs.Expr type XBindStmt (GhcPass _1) GhcTc b = XBindStmtTc

type family XLastStmt x x' b #

#### Instances

Instances details

type XLastStmt (GhcPass _1) (GhcPass _2) b |
Instance details Defined in GHC.Hs.Expr type XLastStmt (GhcPass _1) (GhcPass _2) b = NoExtField

type family XXGRHS x b #

#### Instances

Instances details

type XXGRHS (GhcPass _1) b |
Instance details Defined in GHC.Hs.Expr type XXGRHS (GhcPass _1) b = DataConCantHappen

type family XCGRHS x b #

#### Instances

Instances details

type XCGRHS (GhcPass _1) _2 |
Instance details Defined in GHC.Hs.Expr type XCGRHS (GhcPass _1) _2 = EpAnn GrhsAnn

type family XXGRHSs x b #

#### Instances

Instances details

type XXGRHSs (GhcPass _1) _2 |
Instance details Defined in GHC.Hs.Expr type XXGRHSs (GhcPass _1) _2 = DataConCantHappen

type family XCGRHSs x b #

#### Instances

Instances details

type XCGRHSs (GhcPass _1) _2 |
Instance details Defined in GHC.Hs.Expr type XCGRHSs (GhcPass _1) _2 = EpAnnComments

type family XXMatch x b #

#### Instances

Instances details

type XXMatch (GhcPass _1) b |
Instance details Defined in GHC.Hs.Expr type XXMatch (GhcPass _1) b = DataConCantHappen

type family XCMatch x b #

#### Instances

Instances details

type XCMatch (GhcPass _1) b |
Instance details Defined in GHC.Hs.Expr type XCMatch (GhcPass _1) b = EpAnn [AddEpAnn]

type family XXMatchGroup x b #

#### Instances

Instances details

type XXMatchGroup (GhcPass _1) b |
Instance details Defined in GHC.Hs.Expr type XXMatchGroup (GhcPass _1) b = DataConCantHappen

type family XMG x b #

#### Instances

Instances details

type XMG GhcPs b |
Instance details Defined in GHC.Hs.Expr type XMG GhcPs b = Origin
type XMG GhcRn b |
Instance details Defined in GHC.Hs.Expr type XMG GhcRn b = Origin
type XMG GhcTc b |
Instance details Defined in GHC.Hs.Expr type XMG GhcTc b = MatchGroupTc

type family XXCmdTop x #

#### Instances

Instances details

type XXCmdTop (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XXCmdTop (GhcPass _1) = DataConCantHappen

type family XCmdTop x #

#### Instances

Instances details

type XCmdTop GhcPs |
Instance details Defined in GHC.Hs.Expr type XCmdTop GhcPs = NoExtField
type XCmdTop GhcRn |
Instance details Defined in GHC.Hs.Expr type XCmdTop GhcRn = CmdSyntaxTable GhcRn
type XCmdTop GhcTc |
Instance details Defined in GHC.Hs.Expr type XCmdTop GhcTc = CmdTopTc

data HsCmdTop p #

Haskell Top-level Command

Constructors

HsCmdTop (XCmdTop p) (LHsCmd p) |
XCmdTop !(XXCmdTop p) |

#### Instances

Instances details

HiePass p => ToHie (LocatedAn NoEpAnns (HsCmdTop (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (HsCmdTop (GhcPass p)) -> HieM [HieAST Type]
type Anno (HsCmdTop (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (HsCmdTop (GhcPass p)) = SrcAnn NoEpAnns

type family XXQuote x #

#### Instances

Instances details

type XXQuote GhcPs |
Instance details Defined in GHC.Hs.Expr type XXQuote GhcPs = DataConCantHappen
type XXQuote GhcRn |
Instance details Defined in GHC.Hs.Expr type XXQuote GhcRn = DataConCantHappen
type XXQuote GhcTc |
Instance details Defined in GHC.Hs.Expr type XXQuote GhcTc = NoExtField

type family XVarBr x #

#### Instances

Instances details

type XVarBr GhcPs |
Instance details Defined in GHC.Hs.Expr type XVarBr GhcPs = NoExtField
type XVarBr GhcRn |
Instance details Defined in GHC.Hs.Expr type XVarBr GhcRn = NoExtField
type XVarBr GhcTc |
Instance details Defined in GHC.Hs.Expr type XVarBr GhcTc = DataConCantHappen

type family XTypBr x #

#### Instances

Instances details

type XTypBr GhcPs |
Instance details Defined in GHC.Hs.Expr type XTypBr GhcPs = NoExtField
type XTypBr GhcRn |
Instance details Defined in GHC.Hs.Expr type XTypBr GhcRn = NoExtField
type XTypBr GhcTc |
Instance details Defined in GHC.Hs.Expr type XTypBr GhcTc = DataConCantHappen

type family XDecBrG x #

#### Instances

Instances details

type XDecBrG GhcPs |
Instance details Defined in GHC.Hs.Expr type XDecBrG GhcPs = NoExtField
type XDecBrG GhcRn |
Instance details Defined in GHC.Hs.Expr type XDecBrG GhcRn = NoExtField
type XDecBrG GhcTc |
Instance details Defined in GHC.Hs.Expr type XDecBrG GhcTc = DataConCantHappen

type family XDecBrL x #

#### Instances

Instances details

type XDecBrL GhcPs |
Instance details Defined in GHC.Hs.Expr type XDecBrL GhcPs = NoExtField
type XDecBrL GhcRn |
Instance details Defined in GHC.Hs.Expr type XDecBrL GhcRn = NoExtField
type XDecBrL GhcTc |
Instance details Defined in GHC.Hs.Expr type XDecBrL GhcTc = DataConCantHappen

type family XPatBr x #

#### Instances

Instances details

type XPatBr GhcPs |
Instance details Defined in GHC.Hs.Expr type XPatBr GhcPs = NoExtField
type XPatBr GhcRn |
Instance details Defined in GHC.Hs.Expr type XPatBr GhcRn = NoExtField
type XPatBr GhcTc |
Instance details Defined in GHC.Hs.Expr type XPatBr GhcTc = DataConCantHappen

type family XExpBr x #

#### Instances

Instances details

type XExpBr GhcPs |
Instance details Defined in GHC.Hs.Expr type XExpBr GhcPs = NoExtField
type XExpBr GhcRn |
Instance details Defined in GHC.Hs.Expr type XExpBr GhcRn = NoExtField
type XExpBr GhcTc |
Instance details Defined in GHC.Hs.Expr type XExpBr GhcTc = DataConCantHappen

type family XXUntypedSplice x #

#### Instances

Instances details

type XXUntypedSplice p |
Instance details Defined in GHC.Hs.Expr type XXUntypedSplice p = DataConCantHappen

type family XQuasiQuote x #

#### Instances

Instances details

type XQuasiQuote p |
Instance details Defined in GHC.Hs.Expr type XQuasiQuote p = NoExtField

type family XUntypedSpliceExpr x #

#### Instances

Instances details

type XUntypedSpliceExpr GhcPs |
Instance details Defined in GHC.Hs.Expr type XUntypedSpliceExpr GhcPs = EpAnn [AddEpAnn]
type XUntypedSpliceExpr GhcRn |
Instance details Defined in GHC.Hs.Expr type XUntypedSpliceExpr GhcRn = EpAnn [AddEpAnn]
type XUntypedSpliceExpr GhcTc |
Instance details Defined in GHC.Hs.Expr type XUntypedSpliceExpr GhcTc = DataConCantHappen

type family XXTupArg x #

#### Instances

Instances details

type XXTupArg (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XXTupArg (GhcPass _1) = DataConCantHappen

type family XMissing x #

#### Instances

Instances details

type XMissing GhcPs |
Instance details Defined in GHC.Hs.Expr type XMissing GhcPs = EpAnn EpaLocation
type XMissing GhcRn |
Instance details Defined in GHC.Hs.Expr type XMissing GhcRn = NoExtField
type XMissing GhcTc |
Instance details Defined in GHC.Hs.Expr type XMissing GhcTc = Scaled Type

type family XPresent x #

#### Instances

Instances details

type XPresent (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XPresent (GhcPass _1) = EpAnn [AddEpAnn]

type family XXAmbiguousFieldOcc x #

#### Instances

Instances details

type XXAmbiguousFieldOcc (GhcPass _1) |
Instance details Defined in GHC.Hs.Type type XXAmbiguousFieldOcc (GhcPass _1) = DataConCantHappen

type family XAmbiguous x #

#### Instances

Instances details

type XAmbiguous GhcPs |
Instance details Defined in GHC.Hs.Type type XAmbiguous GhcPs = NoExtField
type XAmbiguous GhcRn |
Instance details Defined in GHC.Hs.Type type XAmbiguous GhcRn = NoExtField
type XAmbiguous GhcTc |
Instance details Defined in GHC.Hs.Type type XAmbiguous GhcTc = Id

type family XUnambiguous x #

#### Instances

Instances details

type XUnambiguous GhcPs |
Instance details Defined in GHC.Hs.Type type XUnambiguous GhcPs = NoExtField
type XUnambiguous GhcRn |
Instance details Defined in GHC.Hs.Type type XUnambiguous GhcRn = Name
type XUnambiguous GhcTc |
Instance details Defined in GHC.Hs.Type type XUnambiguous GhcTc = Id

type family XXPragE x #

#### Instances

Instances details

type XXPragE (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XXPragE (GhcPass _1) = DataConCantHappen

type family XSCC x #

#### Instances

Instances details

type XSCC (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XSCC (GhcPass _1) = (EpAnn AnnPragma, SourceText)

type family XXDotFieldOcc x #

#### Instances

Instances details

type XXDotFieldOcc (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XXDotFieldOcc (GhcPass _1) = DataConCantHappen

type family XCDotFieldOcc x #

#### Instances

Instances details

type XCDotFieldOcc (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XCDotFieldOcc (GhcPass _1) = EpAnn AnnFieldLabel

type family XXExpr x #

#### Instances

Instances details

type XXExpr GhcPs |
Instance details Defined in GHC.Hs.Expr type XXExpr GhcPs = DataConCantHappen
type XXExpr GhcRn |
Instance details Defined in GHC.Hs.Expr type XXExpr GhcRn = HsExpansion (HsExpr GhcRn) (HsExpr GhcRn)
type XXExpr GhcTc |
Instance details Defined in GHC.Hs.Expr type XXExpr GhcTc = XXExprGhcTc

type family XPragE x #

#### Instances

Instances details

type XPragE (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XPragE (GhcPass _1) = NoExtField

type family XBinTick x #

type family XTick x #

type family XStatic x #

#### Instances

Instances details

type XStatic GhcPs |
Instance details Defined in GHC.Hs.Expr type XStatic GhcPs = EpAnn [AddEpAnn]
type XStatic GhcRn |
Instance details Defined in GHC.Hs.Expr type XStatic GhcRn = NameSet
type XStatic GhcTc |
Instance details Defined in GHC.Hs.Expr type XStatic GhcTc = (NameSet, Type)

type family XProc x #

#### Instances

Instances details

type XProc (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XProc (GhcPass _1) = EpAnn [AddEpAnn]

type family XUntypedSplice x #

#### Instances

Instances details

type XUntypedSplice GhcPs |
Instance details Defined in GHC.Hs.Expr type XUntypedSplice GhcPs = EpAnnCO
type XUntypedSplice GhcRn |
Instance details Defined in GHC.Hs.Expr type XUntypedSplice GhcRn = HsUntypedSpliceResult (HsExpr GhcRn)
type XUntypedSplice GhcTc |
Instance details Defined in GHC.Hs.Expr type XUntypedSplice GhcTc = DataConCantHappen

data HsUntypedSplice id #

Haskell Splice

Constructors

HsUntypedSpliceExpr (XUntypedSpliceExpr id) (LHsExpr id) |
HsQuasiQuote (XQuasiQuote id) (IdP id) (XRec id FastString) |
XUntypedSplice !(XXUntypedSplice id) |

#### Instances

Instances details

HiePass p => ToHie (LocatedA (HsUntypedSplice (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsUntypedSplice (GhcPass p)) -> HieM [HieAST Type]
type Anno (HsUntypedSplice (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (HsUntypedSplice (GhcPass p)) = SrcSpanAnnA

type family XTypedSplice x #

#### Instances

Instances details

type XTypedSplice GhcPs |
Instance details Defined in GHC.Hs.Expr type XTypedSplice GhcPs = (EpAnnCO, EpAnn [AddEpAnn])
type XTypedSplice GhcRn |
Instance details Defined in GHC.Hs.Expr type XTypedSplice GhcRn = SplicePointName
type XTypedSplice GhcTc |
Instance details Defined in GHC.Hs.Expr type XTypedSplice GhcTc = DelayedSplice

type family XUntypedBracket x #

#### Instances

Instances details

type XUntypedBracket GhcPs |
Instance details Defined in GHC.Hs.Expr type XUntypedBracket GhcPs = EpAnn [AddEpAnn]
type XUntypedBracket GhcRn |
Instance details Defined in GHC.Hs.Expr type XUntypedBracket GhcRn = [PendingRnSplice]
type XUntypedBracket GhcTc |
Instance details Defined in GHC.Hs.Expr type XUntypedBracket GhcTc = HsBracketTc

type family XTypedBracket x #

#### Instances

Instances details

type XTypedBracket GhcPs |
Instance details Defined in GHC.Hs.Expr type XTypedBracket GhcPs = EpAnn [AddEpAnn]
type XTypedBracket GhcRn |
Instance details Defined in GHC.Hs.Expr type XTypedBracket GhcRn = NoExtField
type XTypedBracket GhcTc |
Instance details Defined in GHC.Hs.Expr type XTypedBracket GhcTc = HsBracketTc

type family XArithSeq x #

#### Instances

Instances details

type XArithSeq GhcPs |
Instance details Defined in GHC.Hs.Expr type XArithSeq GhcPs = EpAnn [AddEpAnn]
type XArithSeq GhcRn |
Instance details Defined in GHC.Hs.Expr type XArithSeq GhcRn = NoExtField
type XArithSeq GhcTc |
Instance details Defined in GHC.Hs.Expr type XArithSeq GhcTc = PostTcExpr

type family XExprWithTySig x #

#### Instances

Instances details

type XExprWithTySig GhcPs |
Instance details Defined in GHC.Hs.Expr type XExprWithTySig GhcPs = EpAnn [AddEpAnn]
type XExprWithTySig GhcRn |
Instance details Defined in GHC.Hs.Expr type XExprWithTySig GhcRn = NoExtField
type XExprWithTySig GhcTc |
Instance details Defined in GHC.Hs.Expr type XExprWithTySig GhcTc = NoExtField

type family XProjection x #

#### Instances

Instances details

type XProjection GhcPs |
Instance details Defined in GHC.Hs.Expr type XProjection GhcPs = EpAnn AnnProjection
type XProjection GhcRn |
Instance details Defined in GHC.Hs.Expr type XProjection GhcRn = NoExtField
type XProjection GhcTc |
Instance details Defined in GHC.Hs.Expr type XProjection GhcTc = DataConCantHappen

type family XGetField x #

#### Instances

Instances details

type XGetField GhcPs |
Instance details Defined in GHC.Hs.Expr type XGetField GhcPs = EpAnnCO
type XGetField GhcRn |
Instance details Defined in GHC.Hs.Expr type XGetField GhcRn = NoExtField
type XGetField GhcTc |
Instance details Defined in GHC.Hs.Expr type XGetField GhcTc = DataConCantHappen

type family XLHsOLRecUpdLabels x #

#### Instances

Instances details

type XLHsOLRecUpdLabels p |
Instance details Defined in GHC.Hs.Expr type XLHsOLRecUpdLabels p = NoExtField

type family XLHsRecUpdLabels x #

#### Instances

Instances details

type XLHsRecUpdLabels GhcPs |
Instance details Defined in GHC.Hs.Expr type XLHsRecUpdLabels GhcPs = NoExtField
type XLHsRecUpdLabels GhcRn |
Instance details Defined in GHC.Hs.Expr type XLHsRecUpdLabels GhcRn = NonEmpty (HsRecUpdParent GhcRn)
type XLHsRecUpdLabels GhcTc |
Instance details Defined in GHC.Hs.Expr type XLHsRecUpdLabels GhcTc = DataConCantHappen

type family XRecordUpd x #

#### Instances

Instances details

type XRecordUpd GhcPs |
Instance details Defined in GHC.Hs.Expr type XRecordUpd GhcPs = EpAnn [AddEpAnn]
type XRecordUpd GhcRn |
Instance details Defined in GHC.Hs.Expr type XRecordUpd GhcRn = NoExtField
type XRecordUpd GhcTc |
Instance details Defined in GHC.Hs.Expr type XRecordUpd GhcTc = DataConCantHappen

type family XRecordCon x #

#### Instances

Instances details

type XRecordCon GhcPs |
Instance details Defined in GHC.Hs.Expr type XRecordCon GhcPs = EpAnn [AddEpAnn]
type XRecordCon GhcRn |
Instance details Defined in GHC.Hs.Expr type XRecordCon GhcRn = NoExtField
type XRecordCon GhcTc |
Instance details Defined in GHC.Hs.Expr type XRecordCon GhcTc = PostTcExpr

type family XExplicitList x #

#### Instances

Instances details

type XExplicitList GhcPs |
Instance details Defined in GHC.Hs.Expr type XExplicitList GhcPs = EpAnn AnnList
type XExplicitList GhcRn |
Instance details Defined in GHC.Hs.Expr type XExplicitList GhcRn = NoExtField
type XExplicitList GhcTc |
Instance details Defined in GHC.Hs.Expr type XExplicitList GhcTc = Type

type family XDo x #

#### Instances

Instances details

type XDo GhcPs |
Instance details Defined in GHC.Hs.Expr type XDo GhcPs = EpAnn AnnList
type XDo GhcRn |
Instance details Defined in GHC.Hs.Expr type XDo GhcRn = NoExtField
type XDo GhcTc |
Instance details Defined in GHC.Hs.Expr type XDo GhcTc = Type

type family XLet x #

#### Instances

Instances details

type XLet GhcPs |
Instance details Defined in GHC.Hs.Expr type XLet GhcPs = EpAnnCO
type XLet GhcRn |
Instance details Defined in GHC.Hs.Expr type XLet GhcRn = NoExtField
type XLet GhcTc |
Instance details Defined in GHC.Hs.Expr type XLet GhcTc = NoExtField

type family XMultiIf x #

#### Instances

Instances details

type XMultiIf GhcPs |
Instance details Defined in GHC.Hs.Expr type XMultiIf GhcPs = EpAnn [AddEpAnn]
type XMultiIf GhcRn |
Instance details Defined in GHC.Hs.Expr type XMultiIf GhcRn = NoExtField
type XMultiIf GhcTc |
Instance details Defined in GHC.Hs.Expr type XMultiIf GhcTc = Type

type family XIf x #

#### Instances

Instances details

type XIf GhcPs |
Instance details Defined in GHC.Hs.Expr type XIf GhcPs = EpAnn AnnsIf
type XIf GhcRn |
Instance details Defined in GHC.Hs.Expr type XIf GhcRn = NoExtField
type XIf GhcTc |
Instance details Defined in GHC.Hs.Expr type XIf GhcTc = NoExtField

type family XCase x #

#### Instances

Instances details

type XCase GhcPs |
Instance details Defined in GHC.Hs.Expr type XCase GhcPs = EpAnn EpAnnHsCase
type XCase GhcRn |
Instance details Defined in GHC.Hs.Expr type XCase GhcRn = HsMatchContext GhcTc
type XCase GhcTc |
Instance details Defined in GHC.Hs.Expr type XCase GhcTc = HsMatchContext GhcTc

type family XExplicitSum x #

#### Instances

Instances details

type XExplicitSum GhcPs |
Instance details Defined in GHC.Hs.Expr type XExplicitSum GhcPs = EpAnn AnnExplicitSum
type XExplicitSum GhcRn |
Instance details Defined in GHC.Hs.Expr type XExplicitSum GhcRn = NoExtField
type XExplicitSum GhcTc |
Instance details Defined in GHC.Hs.Expr type XExplicitSum GhcTc = [Type]

type family XExplicitTuple x #

#### Instances

Instances details

type XExplicitTuple GhcPs |
Instance details Defined in GHC.Hs.Expr type XExplicitTuple GhcPs = EpAnn [AddEpAnn]
type XExplicitTuple GhcRn |
Instance details Defined in GHC.Hs.Expr type XExplicitTuple GhcRn = NoExtField
type XExplicitTuple GhcTc |
Instance details Defined in GHC.Hs.Expr type XExplicitTuple GhcTc = NoExtField

type family XSectionR x #

#### Instances

Instances details

type XSectionR GhcPs |
Instance details Defined in GHC.Hs.Expr type XSectionR GhcPs = EpAnnCO
type XSectionR GhcRn |
Instance details Defined in GHC.Hs.Expr type XSectionR GhcRn = EpAnnCO
type XSectionR GhcTc |
Instance details Defined in GHC.Hs.Expr type XSectionR GhcTc = DataConCantHappen

type family XSectionL x #

#### Instances

Instances details

type XSectionL GhcPs |
Instance details Defined in GHC.Hs.Expr type XSectionL GhcPs = EpAnnCO
type XSectionL GhcRn |
Instance details Defined in GHC.Hs.Expr type XSectionL GhcRn = EpAnnCO
type XSectionL GhcTc |
Instance details Defined in GHC.Hs.Expr type XSectionL GhcTc = DataConCantHappen

type family XPar x #

#### Instances

Instances details

type XPar (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XPar (GhcPass _1) = EpAnnCO

type family XNegApp x #

#### Instances

Instances details

type XNegApp GhcPs |
Instance details Defined in GHC.Hs.Expr type XNegApp GhcPs = EpAnn [AddEpAnn]
type XNegApp GhcRn |
Instance details Defined in GHC.Hs.Expr type XNegApp GhcRn = NoExtField
type XNegApp GhcTc |
Instance details Defined in GHC.Hs.Expr type XNegApp GhcTc = NoExtField

type family XOpApp x #

#### Instances

Instances details

type XOpApp GhcPs |
Instance details Defined in GHC.Hs.Expr type XOpApp GhcPs = EpAnn [AddEpAnn]
type XOpApp GhcRn |
Instance details Defined in GHC.Hs.Expr type XOpApp GhcRn = Fixity
type XOpApp GhcTc |
Instance details Defined in GHC.Hs.Expr type XOpApp GhcTc = DataConCantHappen

type family XAppTypeE x #

#### Instances

Instances details

type XAppTypeE GhcPs |
Instance details Defined in GHC.Hs.Expr type XAppTypeE GhcPs = NoExtField
type XAppTypeE GhcRn |
Instance details Defined in GHC.Hs.Expr type XAppTypeE GhcRn = NoExtField
type XAppTypeE GhcTc |
Instance details Defined in GHC.Hs.Expr type XAppTypeE GhcTc = Type

type family XApp x #

#### Instances

Instances details

type XApp (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XApp (GhcPass _1) = EpAnnCO

type family XLamCase x #

#### Instances

Instances details

type XLamCase (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XLamCase (GhcPass _1) = EpAnn [AddEpAnn]

type family XLam x #

#### Instances

Instances details

type XLam (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XLam (GhcPass _1) = NoExtField
type XLam (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XLam (GhcPass _1) = NoExtField

type family XLitE x #

#### Instances

Instances details

type XLitE (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XLitE (GhcPass _1) = EpAnnCO

type family XOverLitE x #

#### Instances

Instances details

type XOverLitE (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XOverLitE (GhcPass _1) = EpAnnCO

type family XIPVar x #

#### Instances

Instances details

type XIPVar GhcPs |
Instance details Defined in GHC.Hs.Expr type XIPVar GhcPs = EpAnnCO
type XIPVar GhcRn |
Instance details Defined in GHC.Hs.Expr type XIPVar GhcRn = EpAnnCO
type XIPVar GhcTc |
Instance details Defined in GHC.Hs.Expr type XIPVar GhcTc = DataConCantHappen

type family XOverLabel x #

#### Instances

Instances details

type XOverLabel GhcPs |
Instance details Defined in GHC.Hs.Expr type XOverLabel GhcPs = EpAnnCO
type XOverLabel GhcRn |
Instance details Defined in GHC.Hs.Expr type XOverLabel GhcRn = EpAnnCO
type XOverLabel GhcTc |
Instance details Defined in GHC.Hs.Expr type XOverLabel GhcTc = DataConCantHappen

type family XRecSel x #

#### Instances

Instances details

type XRecSel GhcPs |
Instance details Defined in GHC.Hs.Expr type XRecSel GhcPs = DataConCantHappen
type XRecSel GhcRn |
Instance details Defined in GHC.Hs.Expr type XRecSel GhcRn = NoExtField
type XRecSel GhcTc |
Instance details Defined in GHC.Hs.Expr type XRecSel GhcTc = NoExtField

type family XUnboundVar x #

#### Instances

Instances details

type XUnboundVar GhcPs |
Instance details Defined in GHC.Hs.Expr type XUnboundVar GhcPs = EpAnn EpAnnUnboundVar
type XUnboundVar GhcRn |
Instance details Defined in GHC.Hs.Expr type XUnboundVar GhcRn = NoExtField
type XUnboundVar GhcTc |
Instance details Defined in GHC.Hs.Expr type XUnboundVar GhcTc = HoleExprRef

type family XVar x #

#### Instances

Instances details

type XVar (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XVar (GhcPass _1) = NoExtField
type XVar (GhcPass _1) |
Instance details Defined in GHC.Hs.Expr type XVar (GhcPass _1) = NoExtField

type family XXModule x #

#### Instances

Instances details

type XXModule p |
Instance details Defined in GHC.Hs type XXModule p = DataConCantHappen

type family XCModule x #

#### Instances

Instances details

type XCModule GhcPs |
Instance details Defined in GHC.Hs type XCModule GhcPs = XModulePs
type XCModule GhcRn |
Instance details Defined in GHC.Hs type XCModule GhcRn = DataConCantHappen
type XCModule GhcTc |
Instance details Defined in GHC.Hs type XCModule GhcTc = DataConCantHappen

type family XXInjectivityAnn x #

#### Instances

Instances details

type XXInjectivityAnn (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXInjectivityAnn (GhcPass _1) = DataConCantHappen

type family XCInjectivityAnn x #

#### Instances

Instances details

type XCInjectivityAnn (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCInjectivityAnn (GhcPass _1) = EpAnn [AddEpAnn]

type family XXRoleAnnotDecl x #

#### Instances

Instances details

type XXRoleAnnotDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXRoleAnnotDecl (GhcPass _1) = DataConCantHappen

type family XCRoleAnnotDecl x #

#### Instances

Instances details

type XCRoleAnnotDecl GhcPs |
Instance details Defined in GHC.Hs.Decls type XCRoleAnnotDecl GhcPs = EpAnn [AddEpAnn]
type XCRoleAnnotDecl GhcRn |
Instance details Defined in GHC.Hs.Decls type XCRoleAnnotDecl GhcRn = NoExtField
type XCRoleAnnotDecl GhcTc |
Instance details Defined in GHC.Hs.Decls type XCRoleAnnotDecl GhcTc = NoExtField

type family XXAnnDecl x #

#### Instances

Instances details

type XXAnnDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXAnnDecl (GhcPass _1) = DataConCantHappen

type family XHsAnnotation x #

#### Instances

Instances details

type XHsAnnotation (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XHsAnnotation (GhcPass _1) = (EpAnn AnnPragma, SourceText)

type family XXWarnDecl x #

#### Instances

Instances details

type XXWarnDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXWarnDecl (GhcPass _1) = DataConCantHappen

type family XWarning x #

#### Instances

Instances details

type XWarning (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XWarning (GhcPass _1) = EpAnn [AddEpAnn]

type family XXWarnDecls x #

#### Instances

Instances details

type XXWarnDecls (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXWarnDecls (GhcPass _1) = DataConCantHappen

type family XWarnings x #

#### Instances

Instances details

type XWarnings GhcPs |
Instance details Defined in GHC.Hs.Decls type XWarnings GhcPs = (EpAnn [AddEpAnn], SourceText)
type XWarnings GhcRn |
Instance details Defined in GHC.Hs.Decls type XWarnings GhcRn = SourceText
type XWarnings GhcTc |
Instance details Defined in GHC.Hs.Decls type XWarnings GhcTc = SourceText

type family XXRuleBndr x #

#### Instances

Instances details

type XXRuleBndr (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXRuleBndr (GhcPass _1) = DataConCantHappen

type family XRuleBndrSig x #

#### Instances

Instances details

type XRuleBndrSig (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XRuleBndrSig (GhcPass _1) = EpAnn [AddEpAnn]

type family XCRuleBndr x #

#### Instances

Instances details

type XCRuleBndr (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCRuleBndr (GhcPass _1) = EpAnn [AddEpAnn]

type family XXRuleDecl x #

#### Instances

Instances details

type XXRuleDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXRuleDecl (GhcPass _1) = DataConCantHappen

type family XHsRule x #

#### Instances

Instances details

type XHsRule GhcPs |
Instance details Defined in GHC.Hs.Decls type XHsRule GhcPs = (EpAnn HsRuleAnn, SourceText)
type XHsRule GhcRn |
Instance details Defined in GHC.Hs.Decls type XHsRule GhcRn = (HsRuleRn, SourceText)
type XHsRule GhcTc |
Instance details Defined in GHC.Hs.Decls type XHsRule GhcTc = (HsRuleRn, SourceText)

type family XXRuleDecls x #

#### Instances

Instances details

type XXRuleDecls (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXRuleDecls (GhcPass _1) = DataConCantHappen

type family XCRuleDecls x #

#### Instances

Instances details

type XCRuleDecls GhcPs |
Instance details Defined in GHC.Hs.Decls type XCRuleDecls GhcPs = (EpAnn [AddEpAnn], SourceText)
type XCRuleDecls GhcRn |
Instance details Defined in GHC.Hs.Decls type XCRuleDecls GhcRn = SourceText
type XCRuleDecls GhcTc |
Instance details Defined in GHC.Hs.Decls type XCRuleDecls GhcTc = SourceText

type family XXForeignExport x #

#### Instances

Instances details

type XXForeignExport (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXForeignExport (GhcPass _1) = DataConCantHappen

type family XCExport x #

#### Instances

Instances details

type XCExport (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCExport (GhcPass _1) = Located SourceText

type family XXForeignImport x #

#### Instances

Instances details

type XXForeignImport (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXForeignImport (GhcPass _1) = DataConCantHappen

type family XCImport x #

#### Instances

Instances details

type XCImport (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCImport (GhcPass _1) = Located SourceText

type family XXForeignDecl x #

#### Instances

Instances details

type XXForeignDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXForeignDecl (GhcPass _1) = DataConCantHappen

type family XForeignExport x #

#### Instances

Instances details

type XForeignExport GhcPs |
Instance details Defined in GHC.Hs.Decls type XForeignExport GhcPs = EpAnn [AddEpAnn]
type XForeignExport GhcRn |
Instance details Defined in GHC.Hs.Decls type XForeignExport GhcRn = NoExtField
type XForeignExport GhcTc |
Instance details Defined in GHC.Hs.Decls type XForeignExport GhcTc = Coercion

data ForeignExport pass #

Constructors

CExport (XCExport pass) (XRec pass CExportSpec) |
XForeignExport !(XXForeignExport pass) |

#### Instances

Instances details

ToHie (ForeignExport GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: ForeignExport GhcRn -> HieM [HieAST Type]

type family XForeignImport x #

#### Instances

Instances details

type XForeignImport GhcPs |
Instance details Defined in GHC.Hs.Decls type XForeignImport GhcPs = EpAnn [AddEpAnn]
type XForeignImport GhcRn |
Instance details Defined in GHC.Hs.Decls type XForeignImport GhcRn = NoExtField
type XForeignImport GhcTc |
Instance details Defined in GHC.Hs.Decls type XForeignImport GhcTc = Coercion

data ForeignImport pass #

Constructors

CImport (XCImport pass) (XRec pass CCallConv) (XRec pass Safety) (Maybe Header) CImportSpec |
XForeignImport !(XXForeignImport pass) |

#### Instances

Instances details

ToHie (ForeignImport GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: ForeignImport GhcRn -> HieM [HieAST Type]

type family XXDefaultDecl x #

#### Instances

Instances details

type XXDefaultDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXDefaultDecl (GhcPass _1) = DataConCantHappen

type family XCDefaultDecl x #

#### Instances

Instances details

type XCDefaultDecl GhcPs |
Instance details Defined in GHC.Hs.Decls type XCDefaultDecl GhcPs = EpAnn [AddEpAnn]
type XCDefaultDecl GhcRn |
Instance details Defined in GHC.Hs.Decls type XCDefaultDecl GhcRn = NoExtField
type XCDefaultDecl GhcTc |
Instance details Defined in GHC.Hs.Decls type XCDefaultDecl GhcTc = NoExtField

type family XViaStrategy x #

#### Instances

Instances details

type XViaStrategy GhcPs |
Instance details Defined in GHC.Hs.Decls type XViaStrategy GhcPs = XViaStrategyPs
type XViaStrategy GhcRn |
Instance details Defined in GHC.Hs.Decls type XViaStrategy GhcRn = LHsSigType GhcRn
type XViaStrategy GhcTc |
Instance details Defined in GHC.Hs.Decls type XViaStrategy GhcTc = Type

type family XNewtypeStrategy x #

#### Instances

Instances details

type XNewtypeStrategy GhcPs |
Instance details Defined in GHC.Hs.Decls type XNewtypeStrategy GhcPs = EpAnn [AddEpAnn]
type XNewtypeStrategy GhcRn |
Instance details Defined in GHC.Hs.Decls type XNewtypeStrategy GhcRn = NoExtField
type XNewtypeStrategy GhcTc |
Instance details Defined in GHC.Hs.Decls type XNewtypeStrategy GhcTc = NoExtField

type family XAnyClassStrategy x #

#### Instances

Instances details

type XAnyClassStrategy GhcPs |
Instance details Defined in GHC.Hs.Decls type XAnyClassStrategy GhcPs = EpAnn [AddEpAnn]
type XAnyClassStrategy GhcRn |
Instance details Defined in GHC.Hs.Decls type XAnyClassStrategy GhcRn = NoExtField
type XAnyClassStrategy GhcTc |
Instance details Defined in GHC.Hs.Decls type XAnyClassStrategy GhcTc = NoExtField

type family XStockStrategy x #

#### Instances

Instances details

type XStockStrategy GhcPs |
Instance details Defined in GHC.Hs.Decls type XStockStrategy GhcPs = EpAnn [AddEpAnn]
type XStockStrategy GhcRn |
Instance details Defined in GHC.Hs.Decls type XStockStrategy GhcRn = NoExtField
type XStockStrategy GhcTc |
Instance details Defined in GHC.Hs.Decls type XStockStrategy GhcTc = NoExtField

type family XXDerivDecl x #

#### Instances

Instances details

type XXDerivDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXDerivDecl (GhcPass _1) = DataConCantHappen

type family XCDerivDecl x #

#### Instances

Instances details

type XCDerivDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCDerivDecl (GhcPass _1) = EpAnn [AddEpAnn]

type family XXInstDecl x #

#### Instances

Instances details

type XXInstDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXInstDecl (GhcPass _1) = DataConCantHappen

type family XTyFamInstD x #

#### Instances

Instances details

type XTyFamInstD GhcPs |
Instance details Defined in GHC.Hs.Decls type XTyFamInstD GhcPs = NoExtField
type XTyFamInstD GhcRn |
Instance details Defined in GHC.Hs.Decls type XTyFamInstD GhcRn = NoExtField
type XTyFamInstD GhcTc |
Instance details Defined in GHC.Hs.Decls type XTyFamInstD GhcTc = NoExtField

type family XDataFamInstD x #

#### Instances

Instances details

type XDataFamInstD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XDataFamInstD (GhcPass _1) = NoExtField

type family XClsInstD x #

#### Instances

Instances details

type XClsInstD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XClsInstD (GhcPass _1) = NoExtField

type family XXClsInstDecl x #

#### Instances

Instances details

type XXClsInstDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXClsInstDecl (GhcPass _1) = DataConCantHappen

type family XCClsInstDecl x #

#### Instances

Instances details

type XCClsInstDecl GhcPs |
Instance details Defined in GHC.Hs.Decls type XCClsInstDecl GhcPs = (EpAnn [AddEpAnn], AnnSortKey)
type XCClsInstDecl GhcRn |
Instance details Defined in GHC.Hs.Decls type XCClsInstDecl GhcRn = NoExtField
type XCClsInstDecl GhcTc |
Instance details Defined in GHC.Hs.Decls type XCClsInstDecl GhcTc = NoExtField

type family XXTyFamInstDecl x #

#### Instances

Instances details

type XXTyFamInstDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXTyFamInstDecl (GhcPass _1) = DataConCantHappen

type family XCTyFamInstDecl x #

#### Instances

Instances details

type XCTyFamInstDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCTyFamInstDecl (GhcPass _1) = EpAnn [AddEpAnn]

type family XXFamEqn x r #

#### Instances

Instances details

type XXFamEqn (GhcPass _1) r |
Instance details Defined in GHC.Hs.Decls type XXFamEqn (GhcPass _1) r = DataConCantHappen

type family XCFamEqn x r #

#### Instances

Instances details

type XCFamEqn (GhcPass _1) r |
Instance details Defined in GHC.Hs.Decls type XCFamEqn (GhcPass _1) r = EpAnn [AddEpAnn]

type family XXConDecl x #

#### Instances

Instances details

type XXConDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXConDecl (GhcPass _1) = DataConCantHappen

type family XConDeclH98 x #

#### Instances

Instances details

type XConDeclH98 (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XConDeclH98 (GhcPass _1) = EpAnn [AddEpAnn]

type family XConDeclGADT x #

#### Instances

Instances details

type XConDeclGADT (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XConDeclGADT (GhcPass _1) = EpAnn [AddEpAnn]

type family XXDerivClauseTys x #

#### Instances

Instances details

type XXDerivClauseTys (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXDerivClauseTys (GhcPass _1) = DataConCantHappen

type family XDctMulti x #

#### Instances

Instances details

type XDctMulti (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XDctMulti (GhcPass _1) = NoExtField

type family XDctSingle x #

#### Instances

Instances details

type XDctSingle (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XDctSingle (GhcPass _1) = NoExtField

type family XXHsDerivingClause x #

#### Instances

Instances details

type XXHsDerivingClause (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXHsDerivingClause (GhcPass _1) = DataConCantHappen

type family XCHsDerivingClause x #

#### Instances

Instances details

type XCHsDerivingClause (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCHsDerivingClause (GhcPass _1) = EpAnn [AddEpAnn]

type family XXHsDataDefn x #

#### Instances

Instances details

type XXHsDataDefn (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXHsDataDefn (GhcPass _1) = DataConCantHappen

type family XCHsDataDefn x #

#### Instances

Instances details

type XCHsDataDefn (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCHsDataDefn (GhcPass _1) = NoExtField

type family XXFamilyDecl x #

#### Instances

Instances details

type XXFamilyDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXFamilyDecl (GhcPass _1) = DataConCantHappen

type family XCFamilyDecl x #

#### Instances

Instances details

type XCFamilyDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCFamilyDecl (GhcPass _1) = EpAnn [AddEpAnn]

type family XXFamilyResultSig x #

#### Instances

Instances details

type XXFamilyResultSig (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXFamilyResultSig (GhcPass _1) = DataConCantHappen

type family XTyVarSig x #

#### Instances

Instances details

type XTyVarSig (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XTyVarSig (GhcPass _1) = NoExtField

type family XCKindSig x #

#### Instances

Instances details

type XCKindSig (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCKindSig (GhcPass _1) = NoExtField

type family XNoSig x #

#### Instances

Instances details

type XNoSig (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XNoSig (GhcPass _1) = NoExtField

type family XXTyClGroup x #

#### Instances

Instances details

type XXTyClGroup (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXTyClGroup (GhcPass _1) = DataConCantHappen

type family XCTyClGroup x #

#### Instances

Instances details

type XCTyClGroup (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCTyClGroup (GhcPass _1) = NoExtField

type family XXFunDep x #

#### Instances

Instances details

type XXFunDep (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXFunDep (GhcPass _1) = DataConCantHappen

type family XCFunDep x #

#### Instances

Instances details

type XCFunDep (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCFunDep (GhcPass _1) = EpAnn [AddEpAnn]

type family XXTyClDecl x #

#### Instances

Instances details

type XXTyClDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXTyClDecl (GhcPass _1) = DataConCantHappen

type family XClassDecl x #

#### Instances

Instances details

type XClassDecl GhcPs |
Instance details Defined in GHC.Hs.Decls type XClassDecl GhcPs = (EpAnn [AddEpAnn], AnnSortKey)
type XClassDecl GhcRn |
Instance details Defined in GHC.Hs.Decls type XClassDecl GhcRn = NameSet
type XClassDecl GhcTc |
Instance details Defined in GHC.Hs.Decls type XClassDecl GhcTc = NameSet

type family XDataDecl x #

#### Instances

Instances details

type XDataDecl GhcPs |
Instance details Defined in GHC.Hs.Decls type XDataDecl GhcPs = EpAnn [AddEpAnn]
type XDataDecl GhcRn |
Instance details Defined in GHC.Hs.Decls type XDataDecl GhcRn = DataDeclRn
type XDataDecl GhcTc |
Instance details Defined in GHC.Hs.Decls type XDataDecl GhcTc = DataDeclRn

type family XSynDecl x #

#### Instances

Instances details

type XSynDecl GhcPs |
Instance details Defined in GHC.Hs.Decls type XSynDecl GhcPs = EpAnn [AddEpAnn]
type XSynDecl GhcRn |
Instance details Defined in GHC.Hs.Decls type XSynDecl GhcRn = NameSet
type XSynDecl GhcTc |
Instance details Defined in GHC.Hs.Decls type XSynDecl GhcTc = NameSet

type family XFamDecl x #

#### Instances

Instances details

type XFamDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XFamDecl (GhcPass _1) = NoExtField

type family XXSpliceDecl x #

#### Instances

Instances details

type XXSpliceDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXSpliceDecl (GhcPass _1) = DataConCantHappen

type family XSpliceDecl x #

#### Instances

Instances details

type XSpliceDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XSpliceDecl (GhcPass _1) = NoExtField

data SpliceDecl p #

Splice Declaration

Constructors

SpliceDecl (XSpliceDecl p) (XRec p (HsUntypedSplice p)) SpliceDecoration |
XSpliceDecl !(XXSpliceDecl p) |

#### Instances

Instances details

ToHie (LocatedA (SpliceDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (SpliceDecl GhcRn) -> HieM [HieAST Type]
type Anno (SpliceDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (SpliceDecl (GhcPass p)) = SrcSpanAnnA

type family XXHsGroup x #

#### Instances

Instances details

type XXHsGroup (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXHsGroup (GhcPass _1) = DataConCantHappen

type family XCHsGroup x #

#### Instances

Instances details

type XCHsGroup (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XCHsGroup (GhcPass _1) = NoExtField

type family XXHsDecl x #

#### Instances

Instances details

type XXHsDecl (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XXHsDecl (GhcPass _1) = DataConCantHappen

type family XRoleAnnotD x #

#### Instances

Instances details

type XRoleAnnotD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XRoleAnnotD (GhcPass _1) = NoExtField

type family XDocD x #

#### Instances

Instances details

type XDocD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XDocD (GhcPass _1) = NoExtField

type family XSpliceD x #

#### Instances

Instances details

type XSpliceD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XSpliceD (GhcPass _1) = NoExtField

type family XRuleD x #

#### Instances

Instances details

type XRuleD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XRuleD (GhcPass _1) = NoExtField

type family XAnnD x #

#### Instances

Instances details

type XAnnD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XAnnD (GhcPass _1) = NoExtField

type family XWarningD x #

#### Instances

Instances details

type XWarningD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XWarningD (GhcPass _1) = NoExtField

type family XForD x #

#### Instances

Instances details

type XForD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XForD (GhcPass _1) = NoExtField

type family XDefD x #

#### Instances

Instances details

type XDefD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XDefD (GhcPass _1) = NoExtField

type family XKindSigD x #

#### Instances

Instances details

type XKindSigD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XKindSigD (GhcPass _1) = NoExtField

type family XSigD x #

#### Instances

Instances details

type XSigD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XSigD (GhcPass _1) = NoExtField

type family XValD x #

#### Instances

Instances details

type XValD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XValD (GhcPass _1) = NoExtField

type family XDerivD x #

#### Instances

Instances details

type XDerivD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XDerivD (GhcPass _1) = NoExtField

type family XInstD x #

#### Instances

Instances details

type XInstD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XInstD (GhcPass _1) = NoExtField

type family XTyClD x #

#### Instances

Instances details

type XTyClD (GhcPass _1) |
Instance details Defined in GHC.Hs.Decls type XTyClD (GhcPass _1) = NoExtField

type family XXStandaloneKindSig x #

#### Instances

Instances details

type XXStandaloneKindSig (GhcPass p) |
Instance details Defined in GHC.Hs.Decls type XXStandaloneKindSig (GhcPass p) = DataConCantHappen

type family XStandaloneKindSig x #

#### Instances

Instances details

type XStandaloneKindSig GhcPs |
Instance details Defined in GHC.Hs.Decls type XStandaloneKindSig GhcPs = EpAnn [AddEpAnn]
type XStandaloneKindSig GhcRn |
Instance details Defined in GHC.Hs.Decls type XStandaloneKindSig GhcRn = NoExtField
type XStandaloneKindSig GhcTc |
Instance details Defined in GHC.Hs.Decls type XStandaloneKindSig GhcTc = NoExtField

data StandaloneKindSig pass #

Constructors

StandaloneKindSig (XStandaloneKindSig pass) (LIdP pass) (LHsSigType pass) |
XStandaloneKindSig !(XXStandaloneKindSig pass) |

#### Instances

Instances details

ToHie (LocatedA (StandaloneKindSig GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (StandaloneKindSig GhcRn) -> HieM [HieAST Type]
ToHie (StandaloneKindSig GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: StandaloneKindSig GhcRn -> HieM [HieAST Type]
type Anno (StandaloneKindSig (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (StandaloneKindSig (GhcPass p)) = SrcSpanAnnA

type family XXFixitySig x #

#### Instances

Instances details

type XXFixitySig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XXFixitySig (GhcPass p) = DataConCantHappen

type family XFixitySig x #

#### Instances

Instances details

type XFixitySig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XFixitySig (GhcPass p) = NoExtField

data FixitySig pass #

Fixity Signature

Constructors

FixitySig (XFixitySig pass) [LIdP pass] Fixity |
XFixitySig !(XXFixitySig pass) |

#### Instances

Instances details

ToHie (LocatedA (FixitySig GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FixitySig GhcRn) -> HieM [HieAST Type]
type Anno (FixitySig (GhcPass p)) |
Instance details Defined in GHC.Hs.Binds type Anno (FixitySig (GhcPass p)) = SrcSpanAnnA

type family XXSig x #

#### Instances

Instances details

type XXSig GhcPs |
Instance details Defined in GHC.Hs.Binds type XXSig GhcPs = DataConCantHappen
type XXSig GhcRn |
Instance details Defined in GHC.Hs.Binds type XXSig GhcRn = IdSig
type XXSig GhcTc |
Instance details Defined in GHC.Hs.Binds type XXSig GhcTc = IdSig

type family XCompleteMatchSig x #

#### Instances

Instances details

type XCompleteMatchSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XCompleteMatchSig (GhcPass p) = (EpAnn [AddEpAnn], SourceText)

type family XSCCFunSig x #

#### Instances

Instances details

type XSCCFunSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XSCCFunSig (GhcPass p) = (EpAnn [AddEpAnn], SourceText)

type family XMinimalSig x #

#### Instances

Instances details

type XMinimalSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XMinimalSig (GhcPass p) = (EpAnn [AddEpAnn], SourceText)

type family XSpecInstSig x #

#### Instances

Instances details

type XSpecInstSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XSpecInstSig (GhcPass p) = (EpAnn [AddEpAnn], SourceText)

type family XSpecSig x #

#### Instances

Instances details

type XSpecSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XSpecSig (GhcPass p) = EpAnn [AddEpAnn]

type family XInlineSig x #

#### Instances

Instances details

type XInlineSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XInlineSig (GhcPass p) = EpAnn [AddEpAnn]

type family XFixSig x #

#### Instances

Instances details

type XFixSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XFixSig (GhcPass p) = EpAnn [AddEpAnn]

type family XIdSig x #

type family XClassOpSig x #

#### Instances

Instances details

type XClassOpSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XClassOpSig (GhcPass p) = EpAnn AnnSig

type family XPatSynSig x #

#### Instances

Instances details

type XPatSynSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XPatSynSig (GhcPass p) = EpAnn AnnSig

type family XTypeSig x #

#### Instances

Instances details

type XTypeSig (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XTypeSig (GhcPass p) = EpAnn AnnSig

type family XXIPBind x #

#### Instances

Instances details

type XXIPBind (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XXIPBind (GhcPass p) = DataConCantHappen

type family XCIPBind x #

#### Instances

Instances details

type XCIPBind GhcPs |
Instance details Defined in GHC.Hs.Binds type XCIPBind GhcPs = EpAnn [AddEpAnn]
type XCIPBind GhcRn |
Instance details Defined in GHC.Hs.Binds type XCIPBind GhcRn = NoExtField
type XCIPBind GhcTc |
Instance details Defined in GHC.Hs.Binds type XCIPBind GhcTc = Id

type family XXHsIPBinds x #

#### Instances

Instances details

type XXHsIPBinds (GhcPass p) |
Instance details Defined in GHC.Hs.Binds type XXHsIPBinds (GhcPass p) = DataConCantHappen

type family XIPBinds x #

#### Instances

Instances details

type XIPBinds GhcPs |
Instance details Defined in GHC.Hs.Binds type XIPBinds GhcPs = NoExtField
type XIPBinds GhcRn |
Instance details Defined in GHC.Hs.Binds type XIPBinds GhcRn = NoExtField
type XIPBinds GhcTc |
Instance details Defined in GHC.Hs.Binds type XIPBinds GhcTc = TcEvBinds

type family XXPatSynBind x x' #

#### Instances

Instances details

type XXPatSynBind (GhcPass idL) (GhcPass idR) |
Instance details Defined in GHC.Hs.Binds type XXPatSynBind (GhcPass idL) (GhcPass idR) = DataConCantHappen

type family XPSB x x' #

#### Instances

Instances details

type XPSB (GhcPass idL) GhcPs |
Instance details Defined in GHC.Hs.Binds type XPSB (GhcPass idL) GhcPs = EpAnn [AddEpAnn]
type XPSB (GhcPass idL) GhcRn |
Instance details Defined in GHC.Hs.Binds type XPSB (GhcPass idL) GhcRn = NameSet
type XPSB (GhcPass idL) GhcTc |
Instance details Defined in GHC.Hs.Binds type XPSB (GhcPass idL) GhcTc = NameSet

type family XXHsBindsLR x x' #

#### Instances

Instances details

type XXHsBindsLR GhcPs pR |
Instance details Defined in GHC.Hs.Binds type XXHsBindsLR GhcPs pR = DataConCantHappen
type XXHsBindsLR GhcRn pR |
Instance details Defined in GHC.Hs.Binds type XXHsBindsLR GhcRn pR = DataConCantHappen
type XXHsBindsLR GhcTc pR |
Instance details Defined in GHC.Hs.Binds type XXHsBindsLR GhcTc pR = AbsBinds

type family XPatSynBind x x' #

#### Instances

Instances details

type XPatSynBind (GhcPass pL) (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XPatSynBind (GhcPass pL) (GhcPass pR) = NoExtField

data PatSynBind idL idR #

- `AnnKeywordId` : `AnnPattern`, `AnnEqual`,`AnnLarrow`, `AnnWhere`,`AnnOpen` `'{'`, `AnnClose` `'}'`,

Pattern Synonym binding

Constructors

PSB |

Fields

- psb_ext :: XPSB idL idR
- psb_id :: LIdP idL

  Name of the pattern synonym

- psb_args :: HsPatSynDetails idR

  Formal parameter names

- psb_def :: LPat idR

  Right-hand side

- psb_dir :: HsPatSynDir idR

  Directionality

XPatSynBind !(XXPatSynBind idL idR) |

#### Instances

Instances details

HiePass p => ToHie (Located (PatSynBind (GhcPass p) (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Located (PatSynBind (GhcPass p) (GhcPass p)) -> HieM [HieAST Type]

type family XVarBind x x' #

#### Instances

Instances details

type XVarBind (GhcPass pL) (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XVarBind (GhcPass pL) (GhcPass pR) = XVarBindGhc pL pR

type family XPatBind x x' #

#### Instances

Instances details

type XPatBind GhcPs (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XPatBind GhcPs (GhcPass pR) = EpAnn [AddEpAnn]
type XPatBind GhcRn (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XPatBind GhcRn (GhcPass pR) = NameSet
type XPatBind GhcTc (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XPatBind GhcTc (GhcPass pR) = (Type, ([CoreTickish], [[CoreTickish]]))

type family XFunBind x x' #

#### Instances

Instances details

type XFunBind (GhcPass pL) GhcPs |
Instance details Defined in GHC.Hs.Binds type XFunBind (GhcPass pL) GhcPs = NoExtField
type XFunBind (GhcPass pL) GhcRn | After the renamer (but before the type-checker), the FunBind extension field contains the locally-bound free variables of this defn. See Note [Bind free vars]
Instance details Defined in GHC.Hs.Binds type XFunBind (GhcPass pL) GhcRn = NameSet

type XFunBind (GhcPass pL) GhcTc

After the type-checker, the FunBind extension field contains the ticks to put on the rhs, if any, and a coercion from the type of the MatchGroup to the type of the Id. Example:

         f :: Int -> forall a. a -> a
         f x y = y

Then the MatchGroup will have type (Int -> a' -> a') (with a free type variable a'). The coercion will take a CoreExpr of this type and convert it to a CoreExpr of type Int -> forall a'. a' -> a' Notice that the coercion captures the free a'.

Instance details Defined in GHC.Hs.Binds type XFunBind (GhcPass pL) GhcTc = (HsWrapper, [CoreTickish])

type family XXValBindsLR x x' #

#### Instances

Instances details

type XXValBindsLR (GhcPass pL) pR |
Instance details Defined in GHC.Hs.Binds type XXValBindsLR (GhcPass pL) pR = NHsValBindsLR (GhcPass pL)

type family XValBinds x x' #

#### Instances

Instances details

type XValBinds (GhcPass pL) (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XValBinds (GhcPass pL) (GhcPass pR) = AnnSortKey

type family XXHsLocalBindsLR x x' #

#### Instances

Instances details

type XXHsLocalBindsLR (GhcPass pL) (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XXHsLocalBindsLR (GhcPass pL) (GhcPass pR) = DataConCantHappen

type family XEmptyLocalBinds x x' #

#### Instances

Instances details

type XEmptyLocalBinds (GhcPass pL) (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XEmptyLocalBinds (GhcPass pL) (GhcPass pR) = NoExtField

type family XHsIPBinds x x' #

#### Instances

Instances details

type XHsIPBinds (GhcPass pL) (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XHsIPBinds (GhcPass pL) (GhcPass pR) = EpAnn AnnList

data HsIPBinds id #

Haskell Implicit Parameter Bindings

Constructors

IPBinds (XIPBinds id) [LIPBind id] |
XHsIPBinds !(XXHsIPBinds id) |

type family XHsValBinds x x' #

#### Instances

Instances details

type XHsValBinds (GhcPass pL) (GhcPass pR) |
Instance details Defined in GHC.Hs.Binds type XHsValBinds (GhcPass pL) (GhcPass pR) = EpAnn AnnList

type LIdP p = XRec p (IdP p) #

type family IdP p #

Maps the "normal" id type for a given pass

#### Instances

Instances details

type IdP (GhcPass p) |
Instance details Defined in GHC.Hs.Extension type IdP (GhcPass p) = IdGhcP p

class WrapXRec p a where #

The trivial wrapper that carries no additional information See Note [XRec and SrcSpans in the AST]

Methods

wrapXRec :: a -> XRec p a #

class MapXRec p where #

We can map over the underlying type contained in an `XRec` while preserving the annotation as is.

Methods

mapXRec :: Anno a ~ Anno b => (a -> b) -> XRec p a -> XRec p b #

#### Instances

Instances details

MapXRec (GhcPass p) |
Instance details Defined in GHC.Hs.Extension Methods mapXRec :: Anno a ~ Anno b => (a -> b) -> XRec (GhcPass p) a -> XRec (GhcPass p) b #

class UnXRec p where #

We can strip off the XRec to access the underlying data. See Note [XRec and SrcSpans in the AST]

Methods

unXRec :: XRec p a -> a #

#### Instances

Instances details

UnXRec (GhcPass p) |
Instance details Defined in GHC.Hs.Extension Methods unXRec :: XRec (GhcPass p) a -> a #

type family Anno a = (b :: Type) #

#### Instances

Instances details

type Anno ConLike |
Instance details Defined in GHC.Hs.Pat type Anno ConLike = SrcSpanAnnN
type Anno FastString |
Instance details Defined in GHC.Hs.Expr type Anno FastString = SrcAnn NoEpAnns
type Anno OverlapMode |
Instance details Defined in GHC.Hs.Decls type Anno OverlapMode = SrcSpanAnnP
type Anno OverlapMode |
Instance details Defined in GHC.Hs.Decls type Anno OverlapMode = SrcSpanAnnP
type Anno CCallConv |
Instance details Defined in GHC.Hs.Decls type Anno CCallConv = SrcSpan
type Anno CExportSpec |
Instance details Defined in GHC.Hs.Decls type Anno CExportSpec = SrcSpan
type Anno CType |
Instance details Defined in GHC.Hs.Decls type Anno CType = SrcSpanAnnP
type Anno Safety |
Instance details Defined in GHC.Hs.Decls type Anno Safety = SrcSpan
type Anno Name |
Instance details Defined in GHC.Hs.Extension type Anno Name = SrcSpanAnnN
type Anno RdrName |
Instance details Defined in GHC.Hs.Extension type Anno RdrName = SrcSpanAnnN
type Anno StringLiteral |
Instance details Defined in GHC.Hs.Binds type Anno StringLiteral = SrcAnn NoEpAnns
type Anno Id |
Instance details Defined in GHC.Hs.Extension type Anno Id = SrcSpanAnnN
type Anno FieldLabelString |
Instance details Defined in GHC.Hs.Expr type Anno FieldLabelString = SrcSpanAnnN
type Anno ModuleName |
Instance details Defined in GHC.Hs type Anno ModuleName = SrcSpanAnnA
type Anno ModuleName |
Instance details Defined in GHC.Hs.ImpExp type Anno ModuleName = SrcSpanAnnA
type Anno RecFieldsDotDot |
Instance details Defined in GHC.Hs.Pat type Anno RecFieldsDotDot = SrcSpan
type Anno HsIPName |
Instance details Defined in GHC.Hs.Type type Anno HsIPName = SrcAnn NoEpAnns
type Anno Bool |
Instance details Defined in GHC.Hs.Decls type Anno Bool = SrcAnn NoEpAnns
type Anno (LocatedA (IE (GhcPass p))) |
Instance details Defined in GHC.Hs.ImpExp type Anno (LocatedA (IE (GhcPass p))) = SrcSpanAnnA
type Anno (LocatedN Name) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Name) = SrcSpan
type Anno (LocatedN RdrName) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN RdrName) = SrcSpan
type Anno (LocatedN Id) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Id) = SrcSpan
type Anno (FixitySig (GhcPass p)) |
Instance details Defined in GHC.Hs.Binds type Anno (FixitySig (GhcPass p)) = SrcSpanAnnA
type Anno (IPBind (GhcPass p)) |
Instance details Defined in GHC.Hs.Binds type Anno (IPBind (GhcPass p)) = SrcSpanAnnA
type Anno (Sig (GhcPass p)) |
Instance details Defined in GHC.Hs.Binds type Anno (Sig (GhcPass p)) = SrcSpanAnnA
type Anno (HsToken tok) |
Instance details Defined in GHC.Hs.Extension type Anno (HsToken tok) = TokenLocation
type Anno (AnnDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (AnnDecl (GhcPass p)) = SrcSpanAnnA
type Anno (ClsInstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (ClsInstDecl (GhcPass p)) = SrcSpanAnnA
type Anno (ConDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (ConDecl (GhcPass p)) = SrcSpanAnnA
type Anno (DataFamInstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DataFamInstDecl (GhcPass p)) = SrcSpanAnnA
type Anno (DefaultDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DefaultDecl (GhcPass p)) = SrcSpanAnnA
type Anno (DerivClauseTys (GhcPass _1)) |
Instance details Defined in GHC.Hs.Decls type Anno (DerivClauseTys (GhcPass _1)) = SrcSpanAnnC
type Anno (DerivDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DerivDecl (GhcPass p)) = SrcSpanAnnA
type Anno (DerivStrategy (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DerivStrategy (GhcPass p)) = SrcAnn NoEpAnns
type Anno (DocDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DocDecl (GhcPass p)) = SrcSpanAnnA
type Anno (FamilyDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (FamilyDecl (GhcPass p)) = SrcSpanAnnA
type Anno (FamilyResultSig (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (FamilyResultSig (GhcPass p)) = SrcAnn NoEpAnns
type Anno (ForeignDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (ForeignDecl (GhcPass p)) = SrcSpanAnnA
type Anno (FunDep (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (FunDep (GhcPass p)) = SrcSpanAnnA
type Anno (HsDecl (GhcPass _1)) |
Instance details Defined in GHC.Hs.Decls type Anno (HsDecl (GhcPass _1)) = SrcSpanAnnA
type Anno (HsDerivingClause (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (HsDerivingClause (GhcPass p)) = SrcAnn NoEpAnns
type Anno (InjectivityAnn (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (InjectivityAnn (GhcPass p)) = SrcAnn NoEpAnns
type Anno (InstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (InstDecl (GhcPass p)) = SrcSpanAnnA
type Anno (RoleAnnotDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RoleAnnotDecl (GhcPass p)) = SrcSpanAnnA
type Anno (RuleBndr (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RuleBndr (GhcPass p)) = SrcAnn NoEpAnns
type Anno (RuleDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RuleDecl (GhcPass p)) = SrcSpanAnnA
type Anno (RuleDecls (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RuleDecls (GhcPass p)) = SrcSpanAnnA
type Anno (SpliceDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (SpliceDecl (GhcPass p)) = SrcSpanAnnA
type Anno (StandaloneKindSig (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (StandaloneKindSig (GhcPass p)) = SrcSpanAnnA
type Anno (TyClDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (TyClDecl (GhcPass p)) = SrcSpanAnnA
type Anno (TyFamInstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (TyFamInstDecl (GhcPass p)) = SrcSpanAnnA
type Anno (WarnDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (WarnDecl (GhcPass p)) = SrcSpanAnnA
type Anno (WarnDecls (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (WarnDecls (GhcPass p)) = SrcSpanAnnA
type Anno (DotFieldOcc (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (DotFieldOcc (GhcPass p)) = SrcAnn NoEpAnns
type Anno (FieldLabelStrings (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (FieldLabelStrings (GhcPass p)) = SrcAnn NoEpAnns
type Anno (HsCmd (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (HsCmd (GhcPass p)) = SrcSpanAnnA
type Anno (HsCmdTop (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (HsCmdTop (GhcPass p)) = SrcAnn NoEpAnns
type Anno (HsExpr (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (HsExpr (GhcPass p)) = SrcSpanAnnA
type Anno (HsUntypedSplice (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (HsUntypedSplice (GhcPass p)) = SrcSpanAnnA
type Anno (IE (GhcPass p)) |
Instance details Defined in GHC.Hs.ImpExp type Anno (IE (GhcPass p)) = SrcSpanAnnA
type Anno (IEWrappedName (GhcPass _1)) |
Instance details Defined in GHC.Hs.ImpExp type Anno (IEWrappedName (GhcPass _1)) = SrcSpanAnnA
type Anno (ImportDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.ImpExp type Anno (ImportDecl (GhcPass p)) = SrcSpanAnnA
type Anno (HsOverLit (GhcPass p)) |
Instance details Defined in GHC.Hs.Pat type Anno (HsOverLit (GhcPass p)) = SrcAnn NoEpAnns
type Anno (Pat (GhcPass p)) |
Instance details Defined in GHC.Hs.Pat type Anno (Pat (GhcPass p)) = SrcSpanAnnA
type Anno (AmbiguousFieldOcc (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (AmbiguousFieldOcc (GhcPass p)) = SrcAnn NoEpAnns
type Anno (BangType (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (BangType (GhcPass p)) = SrcSpanAnnA
type Anno (ConDeclField (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (ConDeclField (GhcPass p)) = SrcSpanAnnA
type Anno (FieldOcc (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (FieldOcc (GhcPass p)) = SrcAnn NoEpAnns
type Anno (HsKind (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (HsKind (GhcPass p)) = SrcSpanAnnA
type Anno (HsSigType (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (HsSigType (GhcPass p)) = SrcSpanAnnA
type Anno (HsType (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (HsType (GhcPass p)) = SrcSpanAnnA
type Anno (Maybe Role) |
Instance details Defined in GHC.Hs.Decls type Anno (Maybe Role) = SrcAnn NoEpAnns
type Anno (Maybe Role) |
Instance details Defined in GHC.Hs.Decls type Anno (Maybe Role) = SrcAnn NoEpAnns
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno [LocatedA (IE (GhcPass p))] |
Instance details Defined in GHC.Hs.ImpExp type Anno [LocatedA (IE (GhcPass p))] = SrcSpanAnnL
type Anno [LocatedA (ConDeclField (GhcPass _1))] |
Instance details Defined in GHC.Hs.Decls type Anno [LocatedA (ConDeclField (GhcPass _1))] = SrcSpanAnnL
type Anno [LocatedA (HsType (GhcPass p))] |
Instance details Defined in GHC.Hs.Type type Anno [LocatedA (HsType (GhcPass p))] = SrcSpanAnnC
type Anno [LocatedN Name] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Name] = SrcSpan
type Anno [LocatedN RdrName] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN RdrName] = SrcSpan
type Anno [LocatedN Id] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Id] = SrcSpan
type Anno (HsBindLR (GhcPass idL) (GhcPass idR)) |
Instance details Defined in GHC.Hs.Binds type Anno (HsBindLR (GhcPass idL) (GhcPass idR)) = SrcSpanAnnA
type Anno (HsUniToken tok utok) |
Instance details Defined in GHC.Hs.Extension type Anno (HsUniToken tok utok) = TokenLocation
type Anno (FamEqn (GhcPass p) _1) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn (GhcPass p) _1) = SrcSpanAnnA
type Anno (FamEqn (GhcPass p) _1) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn (GhcPass p) _1) = SrcSpanAnnA
type Anno (FamEqn p (LocatedA (HsType p))) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn p (LocatedA (HsType p))) = SrcSpanAnnA
type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) = SrcAnn NoEpAnns
type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcSpanAnnA
type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcSpanAnnA
type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA
type Anno (HsFieldBind lhs rhs) |
Instance details Defined in GHC.Hs.Pat type Anno (HsFieldBind lhs rhs) = SrcSpanAnnA
type Anno (HsOuterTyVarBndrs _1 (GhcPass _2)) |
Instance details Defined in GHC.Hs.Type type Anno (HsOuterTyVarBndrs _1 (GhcPass _2)) = SrcSpanAnnA
type Anno (HsTyVarBndr _flag (GhcPass _1)) |
Instance details Defined in GHC.Hs.Type type Anno (HsTyVarBndr _flag (GhcPass _1)) = SrcSpanAnnA
type Anno (HsTyVarBndr _flag GhcPs) |
Instance details Defined in GHC.Hs.Type type Anno (HsTyVarBndr _flag GhcPs) = SrcSpanAnnA
type Anno (HsTyVarBndr _flag GhcRn) |
Instance details Defined in GHC.Hs.Type type Anno (HsTyVarBndr _flag GhcRn) = SrcSpanAnnA
type Anno (HsTyVarBndr _flag GhcTc) |
Instance details Defined in GHC.Hs.Type type Anno (HsTyVarBndr _flag GhcTc) = SrcSpanAnnA
type Anno (SourceText, RuleName) |
Instance details Defined in GHC.Hs.Decls type Anno (SourceText, RuleName) = SrcAnn NoEpAnns
type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) = SrcSpanAnnA
type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA
type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) = SrcSpanAnnA

type family XRec p a = (r :: Type) | r -> a #

GHC's L prefixed variants wrap their vanilla variant in this type family, to add `SrcLoc` info via `Located`. Other passes than `GhcPass` not interested in location information can define this as `type instance XRec NoLocated a = a`. See Note [XRec and SrcSpans in the AST]

#### Instances

Instances details

type XRec (GhcPass p) a |
Instance details Defined in GHC.Hs.Extension type XRec (GhcPass p) a = GenLocated (Anno a) a

data DataConCantHappen #

#### Instances

Instances details

Data DataConCantHappen |

Instance details

Defined in Language.Haskell.Syntax.Extension

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DataConCantHappen -> c DataConCantHappen #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DataConCantHappen #

toConstr :: DataConCantHappen -> Constr #

dataTypeOf :: DataConCantHappen -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DataConCantHappen) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DataConCantHappen) #

gmapT :: (forall b. Data b => b -> b) -> DataConCantHappen -> DataConCantHappen #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DataConCantHappen -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DataConCantHappen -> r #

gmapQ :: (forall d. Data d => d -> u) -> DataConCantHappen -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> DataConCantHappen -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DataConCantHappen -> m DataConCantHappen #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DataConCantHappen -> m DataConCantHappen #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DataConCantHappen -> m DataConCantHappen #

Eq DataConCantHappen |
Instance details Defined in Language.Haskell.Syntax.Extension Methods (==) :: DataConCantHappen -> DataConCantHappen -> Bool # (/=) :: DataConCantHappen -> DataConCantHappen -> Bool #
Ord DataConCantHappen |

Instance details

Defined in Language.Haskell.Syntax.Extension

Methods

compare :: DataConCantHappen -> DataConCantHappen -> Ordering #

(<) :: DataConCantHappen -> DataConCantHappen -> Bool #

(<=) :: DataConCantHappen -> DataConCantHappen -> Bool #

(>) :: DataConCantHappen -> DataConCantHappen -> Bool #

(>=) :: DataConCantHappen -> DataConCantHappen -> Bool #

max :: DataConCantHappen -> DataConCantHappen -> DataConCantHappen #

min :: DataConCantHappen -> DataConCantHappen -> DataConCantHappen #

noExtField :: NoExtField #

Used when constructing a term with an unused extension point.

dataConCantHappen :: DataConCantHappen -> a #

Eliminate a `DataConCantHappen`. See Note [Constructor cannot occur].

newtype ModuleName #

A ModuleName is essentially a simple string, e.g. `Data.List`.

Constructors

ModuleName FastString |

#### Instances

Instances details

Data ModuleName |

Instance details

Defined in Language.Haskell.Syntax.Module.Name

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModuleName -> c ModuleName #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModuleName #

toConstr :: ModuleName -> Constr #

dataTypeOf :: ModuleName -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ModuleName) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModuleName) #

gmapT :: (forall b. Data b => b -> b) -> ModuleName -> ModuleName #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModuleName -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModuleName -> r #

gmapQ :: (forall d. Data d => d -> u) -> ModuleName -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ModuleName -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModuleName -> m ModuleName #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleName -> m ModuleName #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleName -> m ModuleName #

Show ModuleName |
Instance details Defined in Language.Haskell.Syntax.Module.Name Methods showsPrec :: Int -> ModuleName -> ShowS # show :: ModuleName -> String # showList :: [ModuleName] -> ShowS #
NFData ModuleName |
Instance details Defined in Language.Haskell.Syntax.Module.Name Methods rnf :: ModuleName -> () #
Uniquable ModuleName |
Instance details Defined in GHC.Types.Unique Methods getUnique :: ModuleName -> Unique #
Binary ModuleName |
Instance details Defined in GHC.Utils.Binary Methods put_ :: BinHandle -> ModuleName -> IO () # put :: BinHandle -> ModuleName -> IO (Bin ModuleName) # get :: BinHandle -> IO ModuleName #
Outputable ModuleName |
Instance details Defined in GHC.Utils.Outputable Methods ppr :: ModuleName -> SDoc #
Eq ModuleName |
Instance details Defined in Language.Haskell.Syntax.Module.Name Methods (==) :: ModuleName -> ModuleName -> Bool # (/=) :: ModuleName -> ModuleName -> Bool #
Ord ModuleName |
Instance details Defined in Language.Haskell.Syntax.Module.Name Methods compare :: ModuleName -> ModuleName -> Ordering # (<) :: ModuleName -> ModuleName -> Bool # (<=) :: ModuleName -> ModuleName -> Bool # (>) :: ModuleName -> ModuleName -> Bool # (>=) :: ModuleName -> ModuleName -> Bool # max :: ModuleName -> ModuleName -> ModuleName # min :: ModuleName -> ModuleName -> ModuleName #
Hashable ModuleName # |
Instance details Defined in Development.IDE.GHC.Orphans Methods hashWithSalt :: Int -> ModuleName -> Int # hash :: ModuleName -> Int #
ToHie (IEContext (LocatedA ModuleName)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA ModuleName) -> HieM [HieAST Type]
type Anno ModuleName |
Instance details Defined in GHC.Hs type Anno ModuleName = SrcSpanAnnA
type Anno ModuleName |
Instance details Defined in GHC.Hs.ImpExp type Anno ModuleName = SrcSpanAnnA

stableModuleNameCmp :: ModuleName -> ModuleName -> Ordering #

Compares module names lexically, rather than by their `Unique`s

moduleNameFS :: ModuleName -> FastString #

moduleNameString :: ModuleName -> String #

mkModuleName :: String -> ModuleName #

mkModuleNameFS :: FastString -> ModuleName #

moduleNameSlashes :: ModuleName -> String #

Returns the string version of the module name, with dots replaced by slashes.

moduleNameColons :: ModuleName -> String #

Returns the string version of the module name, with dots replaced by colons.

parseModuleName :: ReadP ModuleName #

data IsBootInterface #

Indicates whether a module name is referring to a boot interface (hs-boot file) or regular module (hs file). We need to treat boot modules specially when building compilation graphs, since they break cycles. Regular source files and signature files are treated equivalently.

Constructors

NotBoot |
IsBoot |

#### Instances

Instances details

Data IsBootInterface |

Instance details

Defined in Language.Haskell.Syntax.ImpExp

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IsBootInterface -> c IsBootInterface #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c IsBootInterface #

toConstr :: IsBootInterface -> Constr #

dataTypeOf :: IsBootInterface -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c IsBootInterface) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IsBootInterface) #

gmapT :: (forall b. Data b => b -> b) -> IsBootInterface -> IsBootInterface #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IsBootInterface -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IsBootInterface -> r #

gmapQ :: (forall d. Data d => d -> u) -> IsBootInterface -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> IsBootInterface -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> IsBootInterface -> m IsBootInterface #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IsBootInterface -> m IsBootInterface #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IsBootInterface -> m IsBootInterface #

Show IsBootInterface |
Instance details Defined in Language.Haskell.Syntax.ImpExp Methods showsPrec :: Int -> IsBootInterface -> ShowS # show :: IsBootInterface -> String # showList :: [IsBootInterface] -> ShowS #
Eq IsBootInterface |
Instance details Defined in Language.Haskell.Syntax.ImpExp Methods (==) :: IsBootInterface -> IsBootInterface -> Bool # (/=) :: IsBootInterface -> IsBootInterface -> Bool #
Ord IsBootInterface |

Instance details

Defined in Language.Haskell.Syntax.ImpExp

Methods

compare :: IsBootInterface -> IsBootInterface -> Ordering #

(<) :: IsBootInterface -> IsBootInterface -> Bool #

(<=) :: IsBootInterface -> IsBootInterface -> Bool #

(>) :: IsBootInterface -> IsBootInterface -> Bool #

(>=) :: IsBootInterface -> IsBootInterface -> Bool #

max :: IsBootInterface -> IsBootInterface -> IsBootInterface #

min :: IsBootInterface -> IsBootInterface -> IsBootInterface #

data LayoutInfo pass #

Layout information for declarations.

Constructors

ExplicitBraces !(LHsToken "{" pass) !(LHsToken "}" pass)

Explicit braces written by the user.

    class C a where { foo :: a; bar :: a }

VirtualBraces

Virtual braces inserted by the layout algorithm.

    class C a where
      foo :: a
      bar :: a

Fields

- !Int

  Layout column (indentation level, begins at 1)

NoLayoutInfo | Empty or compiler-generated blocks do not have layout information associated with them.

#### Instances

Instances details

Typeable p => Data (LayoutInfo (GhcPass p)) |

Instance details

Defined in GHC.Hs.Extension

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LayoutInfo (GhcPass p) -> c (LayoutInfo (GhcPass p)) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (LayoutInfo (GhcPass p)) #

toConstr :: LayoutInfo (GhcPass p) -> Constr #

dataTypeOf :: LayoutInfo (GhcPass p) -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (LayoutInfo (GhcPass p))) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (LayoutInfo (GhcPass p))) #

gmapT :: (forall b. Data b => b -> b) -> LayoutInfo (GhcPass p) -> LayoutInfo (GhcPass p) #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LayoutInfo (GhcPass p) -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LayoutInfo (GhcPass p) -> r #

gmapQ :: (forall d. Data d => d -> u) -> LayoutInfo (GhcPass p) -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> LayoutInfo (GhcPass p) -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> LayoutInfo (GhcPass p) -> m (LayoutInfo (GhcPass p)) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LayoutInfo (GhcPass p) -> m (LayoutInfo (GhcPass p)) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LayoutInfo (GhcPass p) -> m (LayoutInfo (GhcPass p)) #

data HsUniToken (tok :: Symbol) (utok :: Symbol) #

With `UnicodeSyntax`, there might be multiple ways to write the same token. For example an arrow could be either `->` or `→`. This choice must be recorded in order to exactprint such tokens, so instead of `HsToken "->"` we introduce `HsUniToken "->" "→"`.

See also `IsUnicodeSyntax` in `GHC.Parser.Annotation`; we do not use here to avoid a dependency.

Constructors

HsNormalTok |
HsUnicodeTok |

#### Instances

Instances details

(KnownSymbol tok, KnownSymbol utok) => Data (HsUniToken tok utok) |

Instance details

Defined in Language.Haskell.Syntax.Concrete

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsUniToken tok utok -> c (HsUniToken tok utok) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsUniToken tok utok) #

toConstr :: HsUniToken tok utok -> Constr #

dataTypeOf :: HsUniToken tok utok -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (HsUniToken tok utok)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsUniToken tok utok)) #

gmapT :: (forall b. Data b => b -> b) -> HsUniToken tok utok -> HsUniToken tok utok #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsUniToken tok utok -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsUniToken tok utok -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsUniToken tok utok -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsUniToken tok utok -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsUniToken tok utok -> m (HsUniToken tok utok) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsUniToken tok utok -> m (HsUniToken tok utok) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsUniToken tok utok -> m (HsUniToken tok utok) #

type Anno (HsUniToken tok utok) |
Instance details Defined in GHC.Hs.Extension type Anno (HsUniToken tok utok) = TokenLocation

data HsToken (tok :: Symbol) #

A token stored in the syntax tree. For example, when parsing a let-expression, we store `HsToken "let"` and `HsToken "in"`. The locations of those tokens can be used to faithfully reproduce (exactprint) the original program text.

Constructors

HsTok |

#### Instances

Instances details

KnownSymbol tok => Data (HsToken tok) |

Instance details

Defined in Language.Haskell.Syntax.Concrete

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsToken tok -> c (HsToken tok) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsToken tok) #

toConstr :: HsToken tok -> Constr #

dataTypeOf :: HsToken tok -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (HsToken tok)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsToken tok)) #

gmapT :: (forall b. Data b => b -> b) -> HsToken tok -> HsToken tok #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsToken tok -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsToken tok -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsToken tok -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsToken tok -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsToken tok -> m (HsToken tok) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsToken tok -> m (HsToken tok) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsToken tok -> m (HsToken tok) #

Eq (HsToken tok) |
Instance details Defined in Language.Haskell.Syntax.Concrete Methods (==) :: HsToken tok -> HsToken tok -> Bool # (/=) :: HsToken tok -> HsToken tok -> Bool #
type Anno (HsToken tok) |
Instance details Defined in GHC.Hs.Extension type Anno (HsToken tok) = TokenLocation

type LHsUniToken (tok :: Symbol) (utok :: Symbol) p = XRec p (HsUniToken tok utok) #

type LHsToken (tok :: Symbol) p = XRec p (HsToken tok) #

type LPat p = XRec p (Pat p) #

type LHsExpr p #

Arguments

= XRec p (HsExpr p) | May have `AnnKeywordId` : `AnnComma` when in a list

Located Haskell Expression

type family SyntaxExpr p #

Syntax Expression

SyntaxExpr is represents the function used in interpreting rebindable syntax. In the parser, we have no information to supply; in the renamer, we have the name of the function (but see Note [Monad fail : Rebindable syntax, overloaded strings] for a wrinkle) and in the type-checker we have a more elaborate structure `SyntaxExprTc`.

In some contexts, rebindable syntax is not implemented, and so we have constructors to represent that possibility in both the renamer and typechecker instantiations.

E.g. `(>>=)` is filled in before the renamer by the appropriate `Name` for `(>>=)`, and then instantiated by the type checker with its type args etc

#### Instances

Instances details

type SyntaxExpr (GhcPass p) |
Instance details Defined in GHC.Hs.Expr type SyntaxExpr (GhcPass p) = SyntaxExprGhc p

data GRHSs p body #

Guarded Right-Hand Sides

GRHSs are used both for pattern bindings and for Matches

- `AnnKeywordId` : `AnnVbar`, `AnnEqual`,`AnnWhere`, `AnnOpen`,`AnnClose` `AnnRarrow`,`AnnSemi`

Constructors

GRHSs |

Fields

- grhssExt :: XCGRHSs p body
- grhssGRHSs :: [LGRHS p body]

  Guarded RHSs

- grhssLocalBinds :: HsLocalBinds p

  The where clause

XGRHSs !(XXGRHSs p body) |

#### Instances

Instances details

(ToHie (LocatedA (body (GhcPass p))), HiePass p, AnnoBody p body) => ToHie (GRHSs (GhcPass p) (LocatedA (body (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: GRHSs (GhcPass p) (LocatedA (body (GhcPass p))) -> HieM [HieAST Type]

data MatchGroup p body #

Constructors

MG |

Fields

- mg_ext :: XMG p body
- mg_alts :: XRec p [LMatch p body]

XMatchGroup !(XXMatchGroup p body) |

#### Instances

Instances details

(HiePass p, AnnoBody p body, ToHie (LocatedA (body (GhcPass p)))) => ToHie (MatchGroup (GhcPass p) (LocatedA (body (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: MatchGroup (GhcPass p) (LocatedA (body (GhcPass p))) -> HieM [HieAST Type]

data PromotionFlag #

Is a TyCon a promoted data constructor or just a normal type constructor?

Constructors

NotPromoted |
IsPromoted |

#### Instances

Instances details

Data PromotionFlag |

Instance details

Defined in Language.Haskell.Syntax.Type

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PromotionFlag -> c PromotionFlag #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PromotionFlag #

toConstr :: PromotionFlag -> Constr #

dataTypeOf :: PromotionFlag -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PromotionFlag) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PromotionFlag) #

gmapT :: (forall b. Data b => b -> b) -> PromotionFlag -> PromotionFlag #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PromotionFlag -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PromotionFlag -> r #

gmapQ :: (forall d. Data d => d -> u) -> PromotionFlag -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> PromotionFlag -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> PromotionFlag -> m PromotionFlag #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PromotionFlag -> m PromotionFlag #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PromotionFlag -> m PromotionFlag #

Eq PromotionFlag |
Instance details Defined in Language.Haskell.Syntax.Type Methods (==) :: PromotionFlag -> PromotionFlag -> Bool # (/=) :: PromotionFlag -> PromotionFlag -> Bool #

isPromoted :: PromotionFlag -> Bool #

data CImportSpec #

Constructors

CLabel CLabelString |
CFunction CCallTarget |
CWrapper |

#### Instances

Instances details

Data CImportSpec |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CImportSpec -> c CImportSpec #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CImportSpec #

toConstr :: CImportSpec -> Constr #

dataTypeOf :: CImportSpec -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CImportSpec) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CImportSpec) #

gmapT :: (forall b. Data b => b -> b) -> CImportSpec -> CImportSpec #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CImportSpec -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CImportSpec -> r #

gmapQ :: (forall d. Data d => d -> u) -> CImportSpec -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CImportSpec -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CImportSpec -> m CImportSpec #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CImportSpec -> m CImportSpec #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CImportSpec -> m CImportSpec #

type LIEWrappedName p = XRec p (IEWrappedName p) #

Located name with possible adornment - `AnnKeywordId`s : `AnnType`, `AnnPattern`

data IEWrappedName p #

A name in an import or export specification which may have adornments. Used primarily for accurate pretty printing of ParsedSource, and API Annotation placement. The `Annotation` is the location of the adornment in the original source.

Constructors

IEName (XIEName p) (LIdP p) | no extra
IEPattern (XIEPattern p) (LIdP p) | pattern X
IEType (XIEType p) (LIdP p) | type (:+:)
XIEWrappedName !(XXIEWrappedName p) |

#### Instances

Instances details

ToHie (IEContext (LocatedA (IEWrappedName GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA (IEWrappedName GhcRn)) -> HieM [HieAST Type]
type Anno (IEWrappedName (GhcPass _1)) |
Instance details Defined in GHC.Hs.ImpExp type Anno (IEWrappedName (GhcPass _1)) = SrcSpanAnnA

data IEWildcard #

Wildcard in an import or export sublist, like the `..` in `import Mod ( T(Mk1, Mk2, ..) )`.

Constructors

NoIEWildcard | no wildcard in this list
IEWildcard Int | wildcard after the given # of items in this list The `Int` is in the range [0..n], where n is the length of the list.

#### Instances

Instances details

Data IEWildcard |

Instance details

Defined in Language.Haskell.Syntax.ImpExp

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IEWildcard -> c IEWildcard #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c IEWildcard #

toConstr :: IEWildcard -> Constr #

dataTypeOf :: IEWildcard -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c IEWildcard) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IEWildcard) #

gmapT :: (forall b. Data b => b -> b) -> IEWildcard -> IEWildcard #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IEWildcard -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IEWildcard -> r #

gmapQ :: (forall d. Data d => d -> u) -> IEWildcard -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> IEWildcard -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard #

Eq IEWildcard |
Instance details Defined in Language.Haskell.Syntax.ImpExp Methods (==) :: IEWildcard -> IEWildcard -> Bool # (/=) :: IEWildcard -> IEWildcard -> Bool #

type LIE pass #

Arguments

= XRec pass (IE pass)

When in a list this may have

- `AnnKeywordId` : `AnnComma`

Located Import or Export

data ImportListInterpretation #

Whether the import list is exactly what to import, or whether `hiding` was used, and therefore everything but what was listed should be imported

Constructors

Exactly |
EverythingBut |

#### Instances

Instances details

Data ImportListInterpretation |

Instance details

Defined in Language.Haskell.Syntax.ImpExp

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ImportListInterpretation -> c ImportListInterpretation #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ImportListInterpretation #

toConstr :: ImportListInterpretation -> Constr #

dataTypeOf :: ImportListInterpretation -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ImportListInterpretation) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ImportListInterpretation) #

gmapT :: (forall b. Data b => b -> b) -> ImportListInterpretation -> ImportListInterpretation #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ImportListInterpretation -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ImportListInterpretation -> r #

gmapQ :: (forall d. Data d => d -> u) -> ImportListInterpretation -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ImportListInterpretation -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ImportListInterpretation -> m ImportListInterpretation #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ImportListInterpretation -> m ImportListInterpretation #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ImportListInterpretation -> m ImportListInterpretation #

Eq ImportListInterpretation |
Instance details Defined in Language.Haskell.Syntax.ImpExp Methods (==) :: ImportListInterpretation -> ImportListInterpretation -> Bool # (/=) :: ImportListInterpretation -> ImportListInterpretation -> Bool #

data ImportDecl pass #

Import Declaration

A single Haskell `import` declaration.

Constructors

ImportDecl |

Fields

- ideclExt :: XCImportDecl pass
- ideclName :: XRec pass ModuleName

  Module name.

- ideclPkgQual :: ImportDeclPkgQual pass

  Package qualifier.

- ideclSource :: IsBootInterface

  IsBoot = {-# SOURCE #-} import

- ideclSafe :: Bool

  True => safe import

- ideclQualified :: ImportDeclQualifiedStyle

  If/how the import is qualified.

- ideclAs :: Maybe (XRec pass ModuleName)

  as Module

- ideclImportList :: Maybe (ImportListInterpretation, XRec pass [LIE pass])

  Explicit import list (EverythingBut => hiding, names)

XImportDecl !(XXImportDecl pass)

`AnnKeywordId`s

- `AnnImport`
- `AnnOpen`, `AnnClose` for ideclSource
- `AnnSafe`,`AnnQualified`, `AnnPackageName`,`AnnAs`, `AnnVal`
- `AnnHiding`,`AnnOpen`, `AnnClose` attached to location in ideclImportList

#### Instances

Instances details

NFData (ImportDecl GhcPs) # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: ImportDecl GhcPs -> () #
ToHie (LocatedA (ImportDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ImportDecl GhcRn) -> HieM [HieAST Type]
type Anno (ImportDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.ImpExp type Anno (ImportDecl (GhcPass p)) = SrcSpanAnnA

data ImportDeclQualifiedStyle #

If/how an import is `qualified`.

Constructors

QualifiedPre | `qualified` appears in prepositive position.
QualifiedPost | `qualified` appears in postpositive position.
NotQualified | Not qualified.

#### Instances

Instances details

Data ImportDeclQualifiedStyle |

Instance details

Defined in Language.Haskell.Syntax.ImpExp

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ImportDeclQualifiedStyle -> c ImportDeclQualifiedStyle #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ImportDeclQualifiedStyle #

toConstr :: ImportDeclQualifiedStyle -> Constr #

dataTypeOf :: ImportDeclQualifiedStyle -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ImportDeclQualifiedStyle) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ImportDeclQualifiedStyle) #

gmapT :: (forall b. Data b => b -> b) -> ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ImportDeclQualifiedStyle -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ImportDeclQualifiedStyle -> r #

gmapQ :: (forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle #

Eq ImportDeclQualifiedStyle |
Instance details Defined in Language.Haskell.Syntax.ImpExp Methods (==) :: ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle -> Bool # (/=) :: ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle -> Bool #

type LImportDecl pass #

Arguments

= XRec pass (ImportDecl pass)

When in a list this may have

- `AnnKeywordId` : `AnnSemi`

Located Import Declaration

data WarnDecls pass #

Warning pragma Declarations

Constructors

Warnings |

Fields

- wd_ext :: XWarnings pass
- wd_warnings :: [LWarnDecl pass]

XWarnDecls !(XXWarnDecls pass) |

#### Instances

Instances details

ToHie (LocatedA (WarnDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecls GhcRn) -> HieM [HieAST Type]
type Anno (WarnDecls (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (WarnDecls (GhcPass p)) = SrcSpanAnnA

data OverLitVal #

Overloaded Literal Value

Constructors

HsIntegral !IntegralLit | Integer-looking literals;
HsFractional !FractionalLit | Frac-looking literals
HsIsString !SourceText !FastString | String-looking literals

#### Instances

Instances details

Data OverLitVal |

Instance details

Defined in Language.Haskell.Syntax.Lit

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OverLitVal -> c OverLitVal #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OverLitVal #

toConstr :: OverLitVal -> Constr #

dataTypeOf :: OverLitVal -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c OverLitVal) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OverLitVal) #

gmapT :: (forall b. Data b => b -> b) -> OverLitVal -> OverLitVal #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OverLitVal -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OverLitVal -> r #

gmapQ :: (forall d. Data d => d -> u) -> OverLitVal -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> OverLitVal -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> OverLitVal -> m OverLitVal #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OverLitVal -> m OverLitVal #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OverLitVal -> m OverLitVal #

Eq OverLitVal |
Instance details Defined in Language.Haskell.Syntax.Lit Methods (==) :: OverLitVal -> OverLitVal -> Bool # (/=) :: OverLitVal -> OverLitVal -> Bool #
Ord OverLitVal |
Instance details Defined in Language.Haskell.Syntax.Lit Methods compare :: OverLitVal -> OverLitVal -> Ordering # (<) :: OverLitVal -> OverLitVal -> Bool # (<=) :: OverLitVal -> OverLitVal -> Bool # (>) :: OverLitVal -> OverLitVal -> Bool # (>=) :: OverLitVal -> OverLitVal -> Bool # max :: OverLitVal -> OverLitVal -> OverLitVal # min :: OverLitVal -> OverLitVal -> OverLitVal #

data HsLit x #

Haskell Literal

Constructors

HsChar (XHsChar x) Char | Character
HsCharPrim (XHsCharPrim x) Char | Unboxed character
HsString (XHsString x) FastString | String
HsStringPrim (XHsStringPrim x) !ByteString | Packed bytes
HsInt (XHsInt x) IntegralLit | Genuinely an Int; arises from GHC.Tc.Deriv.Generate, and from TRANSLATION
HsIntPrim (XHsIntPrim x) Integer | literal `Int#`
HsWordPrim (XHsWordPrim x) Integer | literal `Word#`
HsInt8Prim (XHsInt8Prim x) Integer | literal `Int8#`
HsInt16Prim (XHsInt16Prim x) Integer | literal `Int16#`
HsInt32Prim (XHsInt32Prim x) Integer | literal `Int32#`
HsInt64Prim (XHsInt64Prim x) Integer | literal `Int64#`
HsWord8Prim (XHsWord8Prim x) Integer | literal `Word8#`
HsWord16Prim (XHsWord16Prim x) Integer | literal `Word16#`
HsWord32Prim (XHsWord32Prim x) Integer | literal `Word32#`
HsWord64Prim (XHsWord64Prim x) Integer | literal `Word64#`
HsInteger (XHsInteger x) Integer Type | Genuinely an integer; arises only from TRANSLATION (overloaded literals are done with HsOverLit)
HsRat (XHsRat x) FractionalLit Type | Genuinely a rational; arises only from TRANSLATION (overloaded literals are done with HsOverLit)
HsFloatPrim (XHsFloatPrim x) FractionalLit | Unboxed Float
HsDoublePrim (XHsDoublePrim x) FractionalLit | Unboxed Double
XLit !(XXLit x) |

#### Instances

Instances details

Eq (HsLit x) |
Instance details Defined in Language.Haskell.Syntax.Lit Methods (==) :: HsLit x -> HsLit x -> Bool # (/=) :: HsLit x -> HsLit x -> Bool #

negateOverLitVal :: OverLitVal -> OverLitVal #

data HsSrcBang #

Haskell Source Bang

Bangs on data constructor arguments as the user wrote them in the source code.

`(HsSrcBang _ SrcUnpack SrcLazy)` and `(HsSrcBang _ SrcUnpack NoSrcStrict)` (without StrictData) makes no sense, we emit a warning (in checkValidDataCon) and treat it like `(HsSrcBang _ NoSrcUnpack SrcLazy)`

Constructors

HsSrcBang SourceText SrcUnpackedness SrcStrictness |

#### Instances

Instances details

Data HsSrcBang |

Instance details

Defined in GHC.Core.DataCon

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsSrcBang -> c HsSrcBang #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HsSrcBang #

toConstr :: HsSrcBang -> Constr #

dataTypeOf :: HsSrcBang -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HsSrcBang) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HsSrcBang) #

gmapT :: (forall b. Data b => b -> b) -> HsSrcBang -> HsSrcBang #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsSrcBang -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsSrcBang -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsSrcBang -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsSrcBang -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsSrcBang -> m HsSrcBang #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsSrcBang -> m HsSrcBang #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsSrcBang -> m HsSrcBang #

Outputable HsSrcBang |
Instance details Defined in GHC.Core.DataCon Methods ppr :: HsSrcBang -> SDoc #

data AmbiguousFieldOcc pass #

Ambiguous Field Occurrence

Represents an *occurrence* of a field that is potentially ambiguous after the renamer, with the ambiguity resolved by the typechecker. We always store the `RdrName` that the user originally wrote, and store the selector function after the renamer (for unambiguous occurrences) or the typechecker (for ambiguous occurrences).

See Note [HsRecField and HsRecUpdField] in GHC.Hs.Pat. See Note [Located RdrNames] in GHC.Hs.Expr.

Constructors

Unambiguous (XUnambiguous pass) (XRec pass RdrName) |
Ambiguous (XAmbiguous pass) (XRec pass RdrName) |
XAmbiguousFieldOcc !(XXAmbiguousFieldOcc pass) |

#### Instances

Instances details

HiePass p => ToHie (RFContext (LocatedAn NoEpAnns (AmbiguousFieldOcc (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RFContext (LocatedAn NoEpAnns (AmbiguousFieldOcc (GhcPass p))) -> HieM [HieAST Type]
type Anno (AmbiguousFieldOcc (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (AmbiguousFieldOcc (GhcPass p)) = SrcAnn NoEpAnns

type LAmbiguousFieldOcc pass = XRec pass (AmbiguousFieldOcc pass) #

Located Ambiguous Field Occurence

data FieldOcc pass #

Field Occurrence

Represents an *occurrence* of a field. This may or may not be a binding occurrence (e.g. this type is used in `ConDeclField` and `RecordPatSynField` which bind their fields, but also in `HsRecField` for record construction and patterns, which do not).

We store both the `RdrName` the user originally wrote, and after the renamer we use the extension field to store the selector function.

Constructors

FieldOcc |

Fields

- foExt :: XCFieldOcc pass
- foLabel :: XRec pass RdrName

XFieldOcc !(XXFieldOcc pass) |

#### Instances

Instances details

HiePass p => ToHie (Context (FieldOcc (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (FieldOcc (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (RFContext (LocatedAn NoEpAnns (FieldOcc (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RFContext (LocatedAn NoEpAnns (FieldOcc (GhcPass p))) -> HieM [HieAST Type]
(Eq (XRec pass RdrName), Eq (XCFieldOcc pass), Eq (XXFieldOcc pass)) => Eq (FieldOcc pass) |
Instance details Defined in Language.Haskell.Syntax.Type Methods (==) :: FieldOcc pass -> FieldOcc pass -> Bool # (/=) :: FieldOcc pass -> FieldOcc pass -> Bool #
type Anno (FieldOcc (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (FieldOcc (GhcPass p)) = SrcAnn NoEpAnns

type LFieldOcc pass = XRec pass (FieldOcc pass) #

Located Field Occurrence

type LHsTypeArg p = HsArg p (LHsType p) (LHsKind p) #

data HsArg p tm ty #

Arguments in an expression/type after splitting

Constructors

HsValArg tm |
HsTypeArg !(LHsToken "@" p) ty |
HsArgPar SrcSpan |

#### Instances

Instances details

(HasLoc tm, HasLoc ty) => HasLoc (HsArg p tm ty) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: HsArg p tm ty -> SrcSpan
(ToHie tm, ToHie ty) => ToHie (HsArg p tm ty) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsArg p tm ty -> HieM [HieAST Type]

data HsConDetails tyarg arg rec #

Describes the arguments to a data constructor. This is a common representation for several constructor-related concepts, including:

- The arguments in a Haskell98-style constructor declaration (see `HsConDeclH98Details` in GHC.Hs.Decls).
- The arguments in constructor patterns in `case`/function definitions (see `HsConPatDetails` in GHC.Hs.Pat).
- The left-hand side arguments in a pattern synonym binding (see `HsPatSynDetails` in GHC.Hs.Binds).

One notable exception is the arguments in a GADT constructor, which uses a separate data type entirely (see `HsConDeclGADTDetails` in GHC.Hs.Decls). This is because GADT constructors cannot be declared with infix syntax, unlike the concepts above (#18844).

Constructors

PrefixCon [tyarg] [arg] |
RecCon rec |
InfixCon arg arg |

#### Instances

Instances details

(Data tyarg, Data rec, Data arg) => Data (HsConDetails tyarg arg rec) |

Instance details

Defined in Language.Haskell.Syntax.Type

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsConDetails tyarg arg rec -> c (HsConDetails tyarg arg rec) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsConDetails tyarg arg rec) #

toConstr :: HsConDetails tyarg arg rec -> Constr #

dataTypeOf :: HsConDetails tyarg arg rec -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (HsConDetails tyarg arg rec)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsConDetails tyarg arg rec)) #

gmapT :: (forall b. Data b => b -> b) -> HsConDetails tyarg arg rec -> HsConDetails tyarg arg rec #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsConDetails tyarg arg rec -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsConDetails tyarg arg rec -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsConDetails tyarg arg rec -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsConDetails tyarg arg rec -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsConDetails tyarg arg rec -> m (HsConDetails tyarg arg rec) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsConDetails tyarg arg rec -> m (HsConDetails tyarg arg rec) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsConDetails tyarg arg rec -> m (HsConDetails tyarg arg rec) #

(ToHie tyarg, ToHie arg, ToHie rec) => ToHie (HsConDetails tyarg arg rec) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsConDetails tyarg arg rec -> HieM [HieAST Type]

type LConDeclField pass #

Arguments

= XRec pass (ConDeclField pass) | May have `AnnKeywordId` : `AnnComma` when in a list

Located Constructor Declaration Field

data HsTupleSort #

Haskell Tuple Sort

Constructors

HsUnboxedTuple |
HsBoxedOrConstraintTuple |

#### Instances

Instances details

Data HsTupleSort |

Instance details

Defined in Language.Haskell.Syntax.Type

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsTupleSort -> c HsTupleSort #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HsTupleSort #

toConstr :: HsTupleSort -> Constr #

dataTypeOf :: HsTupleSort -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HsTupleSort) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HsTupleSort) #

gmapT :: (forall b. Data b => b -> b) -> HsTupleSort -> HsTupleSort #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsTupleSort -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsTupleSort -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsTupleSort -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsTupleSort -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsTupleSort -> m HsTupleSort #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsTupleSort -> m HsTupleSort #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsTupleSort -> m HsTupleSort #

data HsScaled pass a #

This is used in the syntax. In constructor declaration. It must keep the arrow representation.

Constructors

HsScaled (HsArrow pass) a |

#### Instances

Instances details

ToHie a => ToHie (HsScaled GhcRn a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsScaled GhcRn a -> HieM [HieAST Type]
HasHaddock a => HasHaddock (HsScaled GhcPs a) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: HsScaled GhcPs a -> HdkA (HsScaled GhcPs a)

data HsLinearArrowTokens pass #

Constructors

HsPct1 !(LHsToken "%1" pass) !(LHsUniToken "->" "\8594" pass) |
HsLolly !(LHsToken "\8888" pass) |

data HsArrow pass #

Denotes the type of arrows in the surface language

Constructors

HsUnrestrictedArrow !(LHsUniToken "->" "\8594" pass) | a -> b or a → b
HsLinearArrow !(HsLinearArrowTokens pass) | a %1 -> b or a %1 → b, or a ⊸ b
HsExplicitMult !(LHsToken "%" pass) !(LHsType pass) !(LHsUniToken "->" "\8594" pass) | a %m -> b or a %m → b (very much including `a %Many -> b`! This is how the programmer wrote it). It is stored as an `HsType` so as to preserve the syntax as written in the program.

data HsType pass #

Haskell Type

Constructors

HsForAllTy

- `AnnKeywordId` : `AnnForall`, `AnnDot`,`AnnDarrow` For details on above see Note [exact print annotations] in GHC.Parser.Annotation

Fields

- hst_xforall :: XForAllTy pass
- hst_tele :: HsForAllTelescope pass
- hst_body :: LHsType pass

HsQualTy |

Fields

- hst_xqual :: XQualTy pass
- hst_ctxt :: LHsContext pass
- hst_body :: LHsType pass

HsTyVar (XTyVar pass) PromotionFlag (LIdP pass)

- `AnnKeywordId` : None

HsAppTy (XAppTy pass) (LHsType pass) (LHsType pass)

- `AnnKeywordId` : None

HsAppKindTy (XAppKindTy pass) (LHsType pass) !(LHsToken "@" pass) (LHsKind pass) |

HsFunTy (XFunTy pass) (HsArrow pass) (LHsType pass) (LHsType pass)

- `AnnKeywordId` : `AnnRarrow`,

HsListTy (XListTy pass) (LHsType pass)

- `AnnKeywordId` : `AnnOpen` `'['`, `AnnClose` `']'`

HsTupleTy (XTupleTy pass) HsTupleSort [LHsType pass]

- `AnnKeywordId` : `AnnOpen` `'(' or '(#'`, `AnnClose` `')' or '#)'`

HsSumTy (XSumTy pass) [LHsType pass]

- `AnnKeywordId` : `AnnOpen` `'(#'`, `AnnClose` '#)'@

HsOpTy (XOpTy pass) PromotionFlag (LHsType pass) (LIdP pass) (LHsType pass)

- `AnnKeywordId` : None

HsParTy (XParTy pass) (LHsType pass)

- `AnnKeywordId` : `AnnOpen` `'('`, `AnnClose` `')'`

HsIParamTy (XIParamTy pass) (XRec pass HsIPName) (LHsType pass)

    (?x :: ty)

- `AnnKeywordId` : `AnnDcolon`

HsStarTy (XStarTy pass) Bool

- `AnnKeywordId` : None

HsKindSig (XKindSig pass) (LHsType pass) (LHsKind pass)

    (ty :: kind)

- `AnnKeywordId` : `AnnOpen` `'('`, `AnnDcolon`,`AnnClose` `')'`

HsSpliceTy (XSpliceTy pass) (HsUntypedSplice pass)

- `AnnKeywordId` : `AnnOpen` `'$('`, `AnnClose` `')'`

HsDocTy (XDocTy pass) (LHsType pass) (LHsDoc pass)

- `AnnKeywordId` : None

HsBangTy (XBangTy pass) HsSrcBang (LHsType pass)

- `AnnKeywordId` : `AnnOpen` `'{-# UNPACK' or '{-# NOUNPACK'`, `AnnClose` `'#-}'` `AnnBang` `'!'`

HsRecTy (XRecTy pass) [LConDeclField pass]

- `AnnKeywordId` : `AnnOpen` `'{'`, `AnnClose` `'}'`

HsExplicitListTy (XExplicitListTy pass) PromotionFlag [LHsType pass]

- `AnnKeywordId` : `AnnOpen` `"'["`, `AnnClose` `']'`

HsExplicitTupleTy (XExplicitTupleTy pass) [LHsType pass]

- `AnnKeywordId` : `AnnOpen` `"'("`, `AnnClose` `')'`

HsTyLit (XTyLit pass) (HsTyLit pass)

- `AnnKeywordId` : None

HsWildCardTy (XWildCardTy pass)

- `AnnKeywordId` : None

XHsType !(XXType pass) |

#### Instances

Instances details

ToHie (TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
ToHie (LocatedA (HsType GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsType GhcRn) -> HieM [HieAST Type]
ToHie (LocatedC [LocatedA (HsType GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedC [LocatedA (HsType GhcRn)] -> HieM [HieAST Type]
DisambTD (HsType GhcPs) |

Instance details

Defined in GHC.Parser.PostProcess

Methods

mkHsAppTyHeadPV :: LHsType GhcPs -> PV (LocatedA (HsType GhcPs)) #

mkHsAppTyPV :: LocatedA (HsType GhcPs) -> LHsType GhcPs -> PV (LocatedA (HsType GhcPs)) #

mkHsAppKindTyPV :: LocatedA (HsType GhcPs) -> LHsToken "@" GhcPs -> LHsType GhcPs -> PV (LocatedA (HsType GhcPs)) #

mkHsOpTyPV :: PromotionFlag -> LHsType GhcPs -> LocatedN RdrName -> LHsType GhcPs -> PV (LocatedA (HsType GhcPs)) #

mkUnpackednessPV :: Located UnpackednessPragma -> LocatedA (HsType GhcPs) -> PV (LocatedA (HsType GhcPs)) #

HasHaddock (LocatedA (HsType GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsType GhcPs) -> HdkA (LocatedA (HsType GhcPs))
type Anno (BangType (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (BangType (GhcPass p)) = SrcSpanAnnA
type Anno (HsKind (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (HsKind (GhcPass p)) = SrcSpanAnnA
type Anno (HsType (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (HsType (GhcPass p)) = SrcSpanAnnA
type Anno [LocatedA (HsType (GhcPass p))] |
Instance details Defined in GHC.Hs.Type type Anno [LocatedA (HsType (GhcPass p))] = SrcSpanAnnC
type Anno (FamEqn p (LocatedA (HsType p))) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn p (LocatedA (HsType p))) = SrcSpanAnnA

data HsBndrVis pass #

Constructors

HsBndrRequired |
HsBndrInvisible (LHsToken "@" pass) |

#### Instances

Instances details

CvtFlag BndrVis (HsBndrVis GhcPs) |
Instance details Defined in GHC.ThToHs Methods cvtFlag :: BndrVis -> HsBndrVis GhcPs
OutputableBndrFlag (HsBndrVis p') p |
Instance details Defined in GHC.Hs.Type Methods pprTyVarBndr :: HsTyVarBndr (HsBndrVis p') (GhcPass p) -> SDoc
RepTV (HsBndrVis GhcRn) BndrVis |
Instance details Defined in GHC.HsToCore.Quote Methods tyVarBndrName :: Name repPlainTV :: Core Name -> HsBndrVis GhcRn -> MetaM (Core (M (TyVarBndr BndrVis))) repKindedTV :: Core Name -> HsBndrVis GhcRn -> Core (M Kind) -> MetaM (Core (M (TyVarBndr BndrVis)))

data HsTyVarBndr flag pass #

Haskell Type Variable Binder The flag annotates the binder. It is `Specificity` in places where explicit specificity is allowed (e.g. x :: forall {a} b. ...) or `()` in other places.

Constructors

UserTyVar (XUserTyVar pass) flag (LIdP pass) |

KindedTyVar (XKindedTyVar pass) flag (LIdP pass) (LHsKind pass)

- `AnnKeywordId` : `AnnOpen`, `AnnDcolon`, `AnnClose`

XTyVarBndr !(XXTyVarBndr pass) |

#### Instances

Instances details

Data flag => ToHie (TVScoped (LocatedA (HsTyVarBndr flag GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TVScoped (LocatedA (HsTyVarBndr flag GhcRn)) -> HieM [HieAST Type]
type Anno (HsTyVarBndr _flag (GhcPass _1)) |
Instance details Defined in GHC.Hs.Type type Anno (HsTyVarBndr _flag (GhcPass _1)) = SrcSpanAnnA
type Anno (HsTyVarBndr _flag GhcPs) |
Instance details Defined in GHC.Hs.Type type Anno (HsTyVarBndr _flag GhcPs) = SrcSpanAnnA
type Anno (HsTyVarBndr _flag GhcRn) |
Instance details Defined in GHC.Hs.Type type Anno (HsTyVarBndr _flag GhcRn) = SrcSpanAnnA
type Anno (HsTyVarBndr _flag GhcTc) |
Instance details Defined in GHC.Hs.Type type Anno (HsTyVarBndr _flag GhcTc) = SrcSpanAnnA

newtype HsIPName #

These names are used early on to store the names of implicit parameters. They completely disappear after type-checking.

Constructors

HsIPName FastString |

#### Instances

Instances details

Data HsIPName |

Instance details

Defined in Language.Haskell.Syntax.Type

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsIPName -> c HsIPName #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HsIPName #

toConstr :: HsIPName -> Constr #

dataTypeOf :: HsIPName -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HsIPName) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HsIPName) #

gmapT :: (forall b. Data b => b -> b) -> HsIPName -> HsIPName #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsIPName -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsIPName -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsIPName -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsIPName -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsIPName -> m HsIPName #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsIPName -> m HsIPName #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsIPName -> m HsIPName #

Eq HsIPName |
Instance details Defined in Language.Haskell.Syntax.Type Methods (==) :: HsIPName -> HsIPName -> Bool # (/=) :: HsIPName -> HsIPName -> Bool #
ToHie (LocatedAn NoEpAnns HsIPName) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns HsIPName -> HieM [HieAST Type]
type Anno HsIPName |
Instance details Defined in GHC.Hs.Type type Anno HsIPName = SrcAnn NoEpAnns

data HsSigType pass #

A type signature that obeys the `forall`-or-nothing rule. In other words, an `LHsType` that uses an `HsOuterSigTyVarBndrs` to represent its outermost type variable quantification. See `Note [Representing type signatures]`.

Constructors

HsSig |

Fields

- sig_ext :: XHsSig pass
- sig_bndrs :: HsOuterSigTyVarBndrs pass
- sig_body :: LHsType pass

XHsSigType !(XXHsSigType pass) |

#### Instances

Instances details

ToHie (TScoped (LocatedA (HsSigType GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (LocatedA (HsSigType GhcRn)) -> HieM [HieAST Type]
ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn))) -> HieM [HieAST Type]
HasHaddock (LocatedA (HsSigType GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsSigType GhcPs) -> HdkA (LocatedA (HsSigType GhcPs))
type Anno (HsSigType (GhcPass p)) |
Instance details Defined in GHC.Hs.Type type Anno (HsSigType (GhcPass p)) = SrcSpanAnnA

type LHsSigWcType pass = HsWildCardBndrs pass (LHsSigType pass) #

Located Haskell Signature Wildcard Type

type LHsWcType pass = HsWildCardBndrs pass (LHsType pass) #

Located Haskell Wildcard Type

type LHsSigType pass = XRec pass (HsSigType pass) #

Located Haskell Signature Type

data HsPatSigType pass #

Types that can appear in pattern signatures, as well as the signatures for term-level binders in RULES. See `Note [Pattern signature binders and scoping]`.

This is very similar to `HsSigWcType`, but with slightly different semantics: see `Note [HsType binders]`. See also `Note [The wildcard story for types]`.

Constructors

HsPS |

Fields

- hsps_ext :: XHsPS pass

  After renamer: `HsPSRn`

- hsps_body :: LHsType pass

  Main payload (the type itself)

XHsPatSigType !(XXHsPatSigType pass) |

#### Instances

Instances details

ToHie (TScoped (HsPatSigType GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsPatSigType GhcRn) -> HieM [HieAST Type]

data HsWildCardBndrs pass thing #

Haskell Wildcard Binders

Constructors

HsWC |

Fields

- hswc_ext :: XHsWC pass thing
- hswc_body :: thing

XHsWildCardBndrs !(XXHsWildCardBndrs pass thing) |

#### Instances

Instances details

ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
HasHaddock a => HasHaddock (HsWildCardBndrs GhcPs a) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: HsWildCardBndrs GhcPs a -> HdkA (HsWildCardBndrs GhcPs a)

type HsOuterFamEqnTyVarBndrs = HsOuterTyVarBndrs () #

Used for type-family instance equations, e.g.,

    type instance forall a. F [a] = Tree a

The notion of specificity is irrelevant in type family equations, so we use `()` for the `HsOuterTyVarBndrs` `flag`.

type HsOuterSigTyVarBndrs = HsOuterTyVarBndrs Specificity #

Used for signatures, e.g.,

    f :: forall a {b}. blah

We use `Specificity` for the `HsOuterTyVarBndrs` `flag` to allow distinguishing between specified and inferred type variables.

data HsOuterTyVarBndrs flag pass #

The outermost type variables in a type that obeys the `forall`-or-nothing rule. See `Note [forall-or-nothing rule]`.

Constructors

HsOuterImplicit | Implicit forall, e.g., `f :: a -> b -> b`

Fields

- hso_ximplicit :: XHsOuterImplicit pass

HsOuterExplicit | Explicit forall, e.g., `f :: forall a b. a -> b -> b`

Fields

- hso_xexplicit :: XHsOuterExplicit pass flag
- hso_bndrs :: [LHsTyVarBndr flag (NoGhcTc pass)]

XHsOuterTyVarBndrs !(XXHsOuterTyVarBndrs pass) |

#### Instances

Instances details

Data flag => ToHie (TVScoped (HsOuterTyVarBndrs flag GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TVScoped (HsOuterTyVarBndrs flag GhcRn) -> HieM [HieAST Type]
type Anno (HsOuterTyVarBndrs _1 (GhcPass _2)) |
Instance details Defined in GHC.Hs.Type type Anno (HsOuterTyVarBndrs _1 (GhcPass _2)) = SrcSpanAnnA

data LHsQTyVars pass #

Located Haskell Quantified Type Variables

Constructors

HsQTvs |

Fields

- hsq_ext :: XHsQTvs pass
- hsq_explicit :: [LHsTyVarBndr (HsBndrVis pass) pass]

XLHsQTyVars !(XXLHsQTyVars pass) |

#### Instances

Instances details

ToHie (TScoped (LHsQTyVars GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (LHsQTyVars GhcRn) -> HieM [HieAST Type]

type LHsTyVarBndr flag pass = XRec pass (HsTyVarBndr flag pass) #

Located Haskell Type Variable Binder

data HsForAllTelescope pass #

The type variable binders in an `HsForAllTy`. See also `Note [Variable Specificity and Forall Visibility]` in GHC.Tc.Gen.HsType.

Constructors

HsForAllVis | A visible `forall` (e.g., `forall a -> {...}`). These do not have any notion of specificity, so we use `()` as a placeholder value.

Fields

- hsf_xvis :: XHsForAllVis pass
- hsf_vis_bndrs :: [LHsTyVarBndr () pass]

HsForAllInvis | An invisible `forall` (e.g., `forall a {b} c. {...}`), where each binder has a `Specificity`.

Fields

- hsf_xinvis :: XHsForAllInvis pass
- hsf_invis_bndrs :: [LHsTyVarBndr Specificity pass]

XHsForAllTelescope !(XXHsForAllTelescope pass) |

type LHsKind pass #

Arguments

= XRec pass (HsKind pass) | `AnnKeywordId` : `AnnDcolon`

Located Haskell Kind

type HsKind pass = HsType pass #

Haskell Kind

type LHsType pass #

Arguments

= XRec pass (HsType pass) | May have `AnnKeywordId` : `AnnComma` when in a list

Located Haskell Type

type HsContext pass = [LHsType pass] #

Haskell Context

type LHsContext pass #

Arguments

= XRec pass (HsContext pass) | `AnnKeywordId` : `AnnUnit` For details on above see Note [exact print annotations] in GHC.Parser.Annotation

Located Haskell Context

type LBangType pass = XRec pass (BangType pass) #

Located Bang Type

hsQTvExplicit :: LHsQTyVars pass -> [LHsTyVarBndr (HsBndrVis pass) pass] #

hsPatSigType :: HsPatSigType pass -> LHsType pass #

mapHsOuterImplicit :: (XHsOuterImplicit pass -> XHsOuterImplicit pass) -> HsOuterTyVarBndrs flag pass -> HsOuterTyVarBndrs flag pass #

hsIPNameFS :: HsIPName -> FastString #

isHsBndrInvisible :: HsBndrVis pass -> Bool #

isHsKindedTyVar :: HsTyVarBndr flag pass -> Bool #

Does this `HsTyVarBndr` come with an explicit kind annotation?

hsMult :: HsScaled pass a -> HsArrow pass #

hsScaledThing :: HsScaled pass a -> a #

noTypeArgs :: [Void] #

An empty list that can be used to indicate that there are no type arguments allowed in cases where HsConDetails is applied to Void.

conDetailsArity :: (rec -> Arity) -> HsConDetails tyarg arg rec -> Arity #

data HsFieldBind lhs rhs #

Haskell Field Binding

- `AnnKeywordId` : `AnnEqual`,

For details on above see Note [exact print annotations] in GHC.Parser.Annotation

Constructors

HsFieldBind |

Fields

- hfbAnn :: XHsFieldBind lhs
- hfbLHS :: lhs
- hfbRHS :: rhs

  Filled in by renamer when punning

- hfbPun :: Bool

  Note [Punning]

#### Instances

Instances details

Foldable (HsFieldBind lhs) |

Instance details

Defined in Language.Haskell.Syntax.Pat

Methods

fold :: Monoid m => HsFieldBind lhs m -> m #

foldMap :: Monoid m => (a -> m) -> HsFieldBind lhs a -> m #

foldMap' :: Monoid m => (a -> m) -> HsFieldBind lhs a -> m #

foldr :: (a -> b -> b) -> b -> HsFieldBind lhs a -> b #

foldr' :: (a -> b -> b) -> b -> HsFieldBind lhs a -> b #

foldl :: (b -> a -> b) -> b -> HsFieldBind lhs a -> b #

foldl' :: (b -> a -> b) -> b -> HsFieldBind lhs a -> b #

foldr1 :: (a -> a -> a) -> HsFieldBind lhs a -> a #

foldl1 :: (a -> a -> a) -> HsFieldBind lhs a -> a #

toList :: HsFieldBind lhs a -> [a] #

null :: HsFieldBind lhs a -> Bool #

length :: HsFieldBind lhs a -> Int #

elem :: Eq a => a -> HsFieldBind lhs a -> Bool #

maximum :: Ord a => HsFieldBind lhs a -> a #

minimum :: Ord a => HsFieldBind lhs a -> a #

sum :: Num a => HsFieldBind lhs a -> a #

product :: Num a => HsFieldBind lhs a -> a #

Traversable (HsFieldBind lhs) |
Instance details Defined in Language.Haskell.Syntax.Pat Methods traverse :: Applicative f => (a -> f b) -> HsFieldBind lhs a -> f (HsFieldBind lhs b) # sequenceA :: Applicative f => HsFieldBind lhs (f a) -> f (HsFieldBind lhs a) # mapM :: Monad m => (a -> m b) -> HsFieldBind lhs a -> m (HsFieldBind lhs b) # sequence :: Monad m => HsFieldBind lhs (m a) -> m (HsFieldBind lhs a) #
Functor (HsFieldBind lhs) |
Instance details Defined in Language.Haskell.Syntax.Pat Methods fmap :: (a -> b) -> HsFieldBind lhs a -> HsFieldBind lhs b # (<$) :: a -> HsFieldBind lhs b -> HsFieldBind lhs a #
(ToHie (RFContext label), ToHie arg, HasLoc arg, Data arg, Data label) => ToHie (RContext (LocatedA (HsFieldBind label arg))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RContext (LocatedA (HsFieldBind label arg)) -> HieM [HieAST Type]
type Anno (HsFieldBind lhs rhs) |
Instance details Defined in GHC.Hs.Pat type Anno (HsFieldBind lhs rhs) = SrcSpanAnnA

type HsRecUpdField p q = HsFieldBind (LAmbiguousFieldOcc p) (LHsExpr q) #

Haskell Record Update Field

type HsRecField p arg = HsFieldBind (LFieldOcc p) arg #

Haskell Record Field

type LHsRecUpdField p q = XRec p (HsRecUpdField p q) #

Located Haskell Record Update Field

type LHsRecField p arg = XRec p (HsRecField p arg) #

Located Haskell Record Field

type LHsFieldBind p id arg = XRec p (HsFieldBind id arg) #

Located Haskell Record Field

newtype RecFieldsDotDot #

Newtype to be able to have a specific XRec instance for the Int in `rec_dotdot`

Constructors

RecFieldsDotDot |

Fields

- unRecFieldsDotDot :: Int

#### Instances

Instances details

Data RecFieldsDotDot |

Instance details

Defined in Language.Haskell.Syntax.Pat

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RecFieldsDotDot -> c RecFieldsDotDot #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RecFieldsDotDot #

toConstr :: RecFieldsDotDot -> Constr #

dataTypeOf :: RecFieldsDotDot -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RecFieldsDotDot) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RecFieldsDotDot) #

gmapT :: (forall b. Data b => b -> b) -> RecFieldsDotDot -> RecFieldsDotDot #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RecFieldsDotDot -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RecFieldsDotDot -> r #

gmapQ :: (forall d. Data d => d -> u) -> RecFieldsDotDot -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> RecFieldsDotDot -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> RecFieldsDotDot -> m RecFieldsDotDot #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RecFieldsDotDot -> m RecFieldsDotDot #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RecFieldsDotDot -> m RecFieldsDotDot #

Eq RecFieldsDotDot |
Instance details Defined in Language.Haskell.Syntax.Pat Methods (==) :: RecFieldsDotDot -> RecFieldsDotDot -> Bool # (/=) :: RecFieldsDotDot -> RecFieldsDotDot -> Bool #
Ord RecFieldsDotDot |

Instance details

Defined in Language.Haskell.Syntax.Pat

Methods

compare :: RecFieldsDotDot -> RecFieldsDotDot -> Ordering #

(<) :: RecFieldsDotDot -> RecFieldsDotDot -> Bool #

(<=) :: RecFieldsDotDot -> RecFieldsDotDot -> Bool #

(>) :: RecFieldsDotDot -> RecFieldsDotDot -> Bool #

(>=) :: RecFieldsDotDot -> RecFieldsDotDot -> Bool #

max :: RecFieldsDotDot -> RecFieldsDotDot -> RecFieldsDotDot #

min :: RecFieldsDotDot -> RecFieldsDotDot -> RecFieldsDotDot #

type Anno RecFieldsDotDot |
Instance details Defined in GHC.Hs.Pat type Anno RecFieldsDotDot = SrcSpan

data HsRecFields p arg #

Haskell Record Fields

HsRecFields is used only for patterns and expressions (not data type declarations)

Constructors

HsRecFields |

Fields

- rec_flds :: [LHsRecField p arg]
- rec_dotdot :: Maybe (XRec p RecFieldsDotDot)

#### Instances

Instances details

(ToHie arg, HasLoc arg, Data arg, HiePass p) => ToHie (RContext (HsRecFields (GhcPass p) arg)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RContext (HsRecFields (GhcPass p) arg) -> HieM [HieAST Type]

type HsConPatDetails p = HsConDetails (HsConPatTyArg (NoGhcTc p)) (LPat p) (HsRecFields p (LPat p)) #

Haskell Constructor Pattern Details

data HsConPatTyArg p #

Type argument in a data constructor pattern, e.g. the `@a` in `f (Just @a x) = ...`.

Constructors

HsConPatTyArg !(LHsToken "@" p) (HsPatSigType p) |

type family ConLikeP x #

#### Instances

Instances details

type ConLikeP GhcPs |
Instance details Defined in GHC.Hs.Pat type ConLikeP GhcPs = RdrName
type ConLikeP GhcRn |
Instance details Defined in GHC.Hs.Pat type ConLikeP GhcRn = Name
type ConLikeP GhcTc |
Instance details Defined in GHC.Hs.Pat type ConLikeP GhcTc = ConLike

hsConPatArgs :: UnXRec p => HsConPatDetails p -> [LPat p] #

hsRecFields :: UnXRec p => HsRecFields p arg -> [XCFieldOcc p] #

hsRecFieldsArgs :: UnXRec p => HsRecFields p arg -> [arg] #

hsRecFieldSel :: UnXRec p => HsRecField p arg -> XCFieldOcc p #

data HsPatSynDir id #

Haskell Pattern Synonym Direction

Constructors

Unidirectional |
ImplicitBidirectional |
ExplicitBidirectional (MatchGroup id (LHsExpr id)) |

#### Instances

Instances details

HiePass p => ToHie (HsPatSynDir (GhcPass p)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsPatSynDir (GhcPass p) -> HieM [HieAST Type]

data RecordPatSynField pass #

Record Pattern Synonym Field

Constructors

RecordPatSynField |

Fields

- recordPatSynField :: FieldOcc pass

  Field label visible in rest of the file

- recordPatSynPatVar :: LIdP pass

  Filled in by renamer, the name used internally by the pattern

#### Instances

Instances details

HiePass p => ToHie (PatSynFieldContext (RecordPatSynField (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: PatSynFieldContext (RecordPatSynField (GhcPass p)) -> HieM [HieAST Type]

type HsPatSynDetails pass = HsConDetails Void (LIdP pass) [RecordPatSynField pass] #

Haskell Pattern Synonym Details

type LFixitySig pass = XRec pass (FixitySig pass) #

Located Fixity Signature

data Sig pass #

Signatures and pragmas

Constructors

TypeSig (XTypeSig pass) [LIdP pass] (LHsSigWcType pass)

An ordinary type signature

    f :: Num a => a -> a

After renaming, this list of Names contains the named wildcards brought into scope by this signature. For a signature `_ -> _a -> Bool`, the renamer will leave the unnamed wildcard `_` untouched, and the named wildcard `_a` is then replaced with fresh meta vars in the type. Their names are stored in the type signature that brought them into scope, in this third field to be more specific.

- `AnnKeywordId` : `AnnDcolon`, `AnnComma`

PatSynSig (XPatSynSig pass) [LIdP pass] (LHsSigType pass)

A pattern synonym type signature

    pattern Single :: () => (Show a) => a -> [a]

- `AnnKeywordId` : `AnnPattern`, `AnnDcolon`,`AnnForall` `AnnDot`,`AnnDarrow`

ClassOpSig (XClassOpSig pass) Bool [LIdP pass] (LHsSigType pass)

A signature for a class method False: ordinary class-method signature True: generic-default class method signature e.g. class C a where op :: a -> a -- Ordinary default op :: Eq a => a -> a -- Generic default No wildcards allowed here

- `AnnKeywordId` : `AnnDefault`, `AnnDcolon`

FixSig (XFixSig pass) (FixitySig pass)

An ordinary fixity declaration

        infixl 8 ***

- `AnnKeywordId` : `AnnInfix`, `AnnVal`

InlineSig (XInlineSig pass) (LIdP pass) InlinePragma

An inline pragma

    {#- INLINE f #-}

- `AnnKeywordId` : `AnnOpen` `'{-# INLINE'` and `'['`, `AnnClose`,`AnnOpen`, `AnnVal`,`AnnTilde`, `AnnClose`

SpecSig (XSpecSig pass) (LIdP pass) [LHsSigType pass] InlinePragma

A specialisation pragma

    {-# SPECIALISE f :: Int -> Int #-}

- `AnnKeywordId` : `AnnOpen`, `AnnOpen` `'{-# SPECIALISE'` and `'['`, `AnnTilde`, `AnnVal`, `AnnClose` `']'` and `'#-}'`, `AnnDcolon`

SpecInstSig (XSpecInstSig pass) (LHsSigType pass)

A specialisation pragma for instance declarations only

    {-# SPECIALISE instance Eq [Int] #-}

(Class tys); should be a specialisation of the current instance declaration

- `AnnKeywordId` : `AnnOpen`, `AnnInstance`,`AnnClose`

MinimalSig (XMinimalSig pass) (LBooleanFormula (LIdP pass))

A minimal complete definition pragma

    {-# MINIMAL a | (b, c | (d | e)) #-}

- `AnnKeywordId` : `AnnOpen`, `AnnVbar`,`AnnComma`, `AnnClose`

SCCFunSig (XSCCFunSig pass) (LIdP pass) (Maybe (XRec pass StringLiteral))

A "set cost centre" pragma for declarations

    {-# SCC funName #-}

or

    {-# SCC funName "cost_centre_name" #-}

CompleteMatchSig (XCompleteMatchSig pass) (XRec pass [LIdP pass]) (Maybe (LIdP pass))

A complete match pragma

    {-# COMPLETE C, D [:: T] #-}

Used to inform the pattern match checker about additional complete matchings which, for example, arise from pattern synonym definitions.

XSig !(XXSig pass) |

#### Instances

Instances details

HiePass p => ToHie (SigContext (LocatedA (Sig (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: SigContext (LocatedA (Sig (GhcPass p))) -> HieM [HieAST Type]
type Anno (Sig (GhcPass p)) |
Instance details Defined in GHC.Hs.Binds type Anno (Sig (GhcPass p)) = SrcSpanAnnA

type LSig pass = XRec pass (Sig pass) #

Located Signature

data IPBind id #

Implicit parameter bindings.

- `AnnKeywordId` : `AnnEqual`

Constructors

IPBind (XCIPBind id) (XRec id HsIPName) (LHsExpr id) |
XIPBind !(XXIPBind id) |

#### Instances

Instances details

HiePass p => ToHie (RScoped (LocatedA (IPBind (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedA (IPBind (GhcPass p))) -> HieM [HieAST Type]
type Anno (IPBind (GhcPass p)) |
Instance details Defined in GHC.Hs.Binds type Anno (IPBind (GhcPass p)) = SrcSpanAnnA

type LIPBind id = XRec id (IPBind id) #

Located Implicit Parameter Binding

May have `AnnKeywordId` : `AnnSemi` when in a list

data HsLocalBindsLR idL idR #

Haskell Local Bindings with separate Left and Right identifier types

Bindings in a 'let' expression or a 'where' clause

Constructors

HsValBinds (XHsValBinds idL idR) (HsValBindsLR idL idR) | Haskell Value Bindings
HsIPBinds (XHsIPBinds idL idR) (HsIPBinds idR) | Haskell Implicit Parameter Bindings
EmptyLocalBinds (XEmptyLocalBinds idL idR) | Empty Local Bindings
XHsLocalBindsLR !(XXHsLocalBindsLR idL idR) |

#### Instances

Instances details

HiePass p => ToHie (RScoped (HsLocalBinds (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (HsLocalBinds (GhcPass p)) -> HieM [HieAST Type]

data HsBindLR idL idR #

Haskell Binding with separate Left and Right id's

Constructors

FunBind

Function-like Binding

FunBind is used for both functions `f x = e` and variables `f = x -> e` and strict variables `!x = x + 1`

Reason 1: Special case for type inference: see `tcMonoBinds`.

Reason 2: Instance decls can only have FunBinds, which is convenient. If you change this, you'll need to change e.g. rnMethodBinds

But note that the form `f :: a->a = ...` parses as a pattern binding, just like `(f :: a -> a) = ...`

Strict bindings have their strictness recorded in the `SrcStrictness` of their `MatchContext`. See Note [FunBind vs PatBind] for details about the relationship between FunBind and PatBind.

`AnnKeywordId`s

- `AnnFunId`, attached to each element of fun_matches
- `AnnEqual`,`AnnWhere`, `AnnOpen`,`AnnClose`,

Fields

- fun_ext :: XFunBind idL idR
- fun_id :: LIdP idL
- fun_matches :: MatchGroup idR (LHsExpr idR)

  The payload

PatBind | Pattern Binding The pattern is never a simple variable; That case is done by FunBind. See Note [FunBind vs PatBind] for details about the relationship between FunBind and PatBind.

Fields

- pat_ext :: XPatBind idL idR
- pat_lhs :: LPat idL
- pat_rhs :: GRHSs idR (LHsExpr idR)

VarBind | Variable Binding Dictionary binding and suchlike. All VarBinds are introduced by the type checker

Fields

- var_ext :: XVarBind idL idR
- var_id :: IdP idL
- var_rhs :: LHsExpr idR

  Located only for consistency

PatSynBind | Patterns Synonym Binding

Fields

- (XPatSynBind idL idR)
- (PatSynBind idL idR)
  - `AnnKeywordId` : `AnnPattern`, `AnnLarrow`,`AnnEqual`, `AnnWhere` `AnnOpen` `'{'`,`AnnClose` `'}'`

XHsBindsLR !(XXHsBindsLR idL idR) |

#### Instances

Instances details

HiePass p => HasType (LocatedA (HsBind (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (HsBind (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (BindContext (LocatedA (HsBind (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: BindContext (LocatedA (HsBind (GhcPass p))) -> HieM [HieAST Type]
type Anno (HsBindLR (GhcPass idL) (GhcPass idR)) |
Instance details Defined in GHC.Hs.Binds type Anno (HsBindLR (GhcPass idL) (GhcPass idR)) = SrcSpanAnnA

type LHsBindLR idL idR = XRec idL (HsBindLR idL idR) #

Located Haskell Binding with separate Left and Right identifier types

type LHsBindsLR idL idR = Bag (LHsBindLR idL idR) #

Located Haskell Bindings with separate Left and Right identifier types

type HsBind id = HsBindLR id id #

Haskell Binding

type LHsBinds id = LHsBindsLR id id #

Located Haskell Bindings

type LHsBind id = LHsBindLR id id #

Located Haskell Binding

data HsValBindsLR idL idR #

Haskell Value bindings with separate Left and Right identifier types (not implicit parameters) Used for both top level and nested bindings May contain pattern synonym bindings

Constructors

ValBinds (XValBinds idL idR) (LHsBindsLR idL idR) [LSig idR] | Value Bindings In Before renaming RHS; idR is always RdrName Not dependency analysed Recursive by default
XValBindsLR !(XXValBindsLR idL idR) | Value Bindings Out After renaming RHS; idR can be Name or Id Dependency analysed, later bindings in the list may depend on earlier ones.

#### Instances

Instances details

HiePass p => ToHie (RScoped (HsValBindsLR (GhcPass p) (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (HsValBindsLR (GhcPass p) (GhcPass p)) -> HieM [HieAST Type]

type HsValBinds id = HsValBindsLR id id #

Haskell Value Bindings

type LHsLocalBindsLR idL idR = XRec idL (HsLocalBindsLR idL idR) #

type LHsLocalBinds id = XRec id (HsLocalBinds id) #

Located Haskell local bindings

type HsLocalBinds id = HsLocalBindsLR id id #

Haskell Local Bindings

isFixityLSig :: UnXRec p => LSig p -> Bool #

isTypeLSig :: UnXRec p => LSig p -> Bool #

isSpecLSig :: UnXRec p => LSig p -> Bool #

isSpecInstLSig :: UnXRec p => LSig p -> Bool #

isPragLSig :: UnXRec p => LSig p -> Bool #

isInlineLSig :: UnXRec p => LSig p -> Bool #

isMinimalLSig :: UnXRec p => LSig p -> Bool #

isSCCFunSig :: UnXRec p => LSig p -> Bool #

isCompleteMatchSig :: UnXRec p => LSig p -> Bool #

data RoleAnnotDecl pass #

Role Annotation Declaration

Constructors

RoleAnnotDecl (XCRoleAnnotDecl pass) (LIdP pass) [XRec pass (Maybe Role)]

- `AnnKeywordId` : `AnnType`, `AnnRole`

XRoleAnnotDecl !(XXRoleAnnotDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (RoleAnnotDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RoleAnnotDecl GhcRn) -> HieM [HieAST Type]
type Anno (RoleAnnotDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RoleAnnotDecl (GhcPass p)) = SrcSpanAnnA

type LRoleAnnotDecl pass = XRec pass (RoleAnnotDecl pass) #

Located Role Annotation Declaration

data AnnProvenance pass #

Annotation Provenance

Constructors

ValueAnnProvenance (LIdP pass) |
TypeAnnProvenance (LIdP pass) |
ModuleAnnProvenance |

#### Instances

Instances details

ToHie (AnnProvenance GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: AnnProvenance GhcRn -> HieM [HieAST Type]

type LAnnDecl pass = XRec pass (AnnDecl pass) #

Located Annotation Declaration

type LWarnDecl pass = XRec pass (WarnDecl pass) #

Located Warning pragma Declaration

type LWarnDecls pass = XRec pass (WarnDecls pass) #

Located Warning Declarations

data DocDecl pass #

Documentation comment Declaration

Constructors

DocCommentNext (LHsDoc pass) |
DocCommentPrev (LHsDoc pass) |
DocCommentNamed String (LHsDoc pass) |
DocGroup Int (LHsDoc pass) |

#### Instances

Instances details

(Data pass, Data (IdP pass)) => Data (DocDecl pass) |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DocDecl pass -> c (DocDecl pass) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (DocDecl pass) #

toConstr :: DocDecl pass -> Constr #

dataTypeOf :: DocDecl pass -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (DocDecl pass)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (DocDecl pass)) #

gmapT :: (forall b. Data b => b -> b) -> DocDecl pass -> DocDecl pass #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DocDecl pass -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DocDecl pass -> r #

gmapQ :: (forall d. Data d => d -> u) -> DocDecl pass -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> DocDecl pass -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DocDecl pass -> m (DocDecl pass) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DocDecl pass -> m (DocDecl pass) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DocDecl pass -> m (DocDecl pass) #

ToHie (LocatedA (DocDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DocDecl GhcRn) -> HieM [HieAST Type]
type Anno (DocDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DocDecl (GhcPass p)) = SrcSpanAnnA

type LDocDecl pass = XRec pass (DocDecl pass) #

Located Documentation comment Declaration

type LRuleBndr pass = XRec pass (RuleBndr pass) #

Located Rule Binder

data RuleDecl pass #

Rule Declaration

Constructors

HsRule |

Fields

- rd_ext :: XHsRule pass

  After renamer, free-vars from the LHS and RHS

- rd_name :: XRec pass RuleName

  Note [Pragma source text] in GHC.Types.SourceText

- rd_act :: Activation
- rd_tyvs :: Maybe [LHsTyVarBndr () (NoGhcTc pass)]

  Forall'd type vars

- rd_tmvs :: [LRuleBndr pass]

  Forall'd term vars, before typechecking; after typechecking this includes all forall'd vars

- rd_lhs :: XRec pass (HsExpr pass)
- rd_rhs :: XRec pass (HsExpr pass)
  - `AnnKeywordId` : `AnnOpen`,`AnnTilde`, `AnnVal`, `AnnClose`, `AnnForall`,`AnnDot`, `AnnEqual`,

XRuleDecl !(XXRuleDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (RuleDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecl GhcRn) -> HieM [HieAST Type]
type Anno (RuleDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RuleDecl (GhcPass p)) = SrcSpanAnnA

type LRuleDecl pass = XRec pass (RuleDecl pass) #

Located Rule Declaration

data RuleDecls pass #

Rule Declarations

Constructors

HsRules |

Fields

- rds_ext :: XCRuleDecls pass
- rds_rules :: [LRuleDecl pass]

XRuleDecls !(XXRuleDecls pass) |

#### Instances

Instances details

ToHie (LocatedA (RuleDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecls GhcRn) -> HieM [HieAST Type]
type Anno (RuleDecls (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (RuleDecls (GhcPass p)) = SrcSpanAnnA

type LRuleDecls pass = XRec pass (RuleDecls pass) #

Located Rule Declarations

data ForeignDecl pass #

Foreign Declaration

Constructors

ForeignImport |

Fields

- fd_i_ext :: XForeignImport pass
- fd_name :: LIdP pass
- fd_sig_ty :: LHsSigType pass
- fd_fi :: ForeignImport pass

ForeignExport

- `AnnKeywordId` : `AnnForeign`, `AnnImport`,`AnnExport`, `AnnDcolon`

Fields

- fd_e_ext :: XForeignExport pass
- fd_name :: LIdP pass
- fd_sig_ty :: LHsSigType pass
- fd_fe :: ForeignExport pass

XForeignDecl !(XXForeignDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (ForeignDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ForeignDecl GhcRn) -> HieM [HieAST Type]
type Anno (ForeignDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (ForeignDecl (GhcPass p)) = SrcSpanAnnA

type LForeignDecl pass = XRec pass (ForeignDecl pass) #

Located Foreign Declaration

data DefaultDecl pass #

Default Declaration

Constructors

DefaultDecl (XCDefaultDecl pass) [LHsType pass]

- `AnnKeywordId`s : `AnnDefault`, `AnnOpen`,`AnnClose`

XDefaultDecl !(XXDefaultDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (DefaultDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DefaultDecl GhcRn) -> HieM [HieAST Type]
type Anno (DefaultDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DefaultDecl (GhcPass p)) = SrcSpanAnnA

type LDefaultDecl pass = XRec pass (DefaultDecl pass) #

Located Default Declaration

type LDerivStrategy pass = XRec pass (DerivStrategy pass) #

A `Located` `DerivStrategy`.

data DerivDecl pass #

Stand-alone 'deriving instance' declaration

Constructors

DerivDecl |

Fields

- deriv_ext :: XCDerivDecl pass
- deriv_type :: LHsSigWcType pass

  The instance type to derive.

  It uses an `LHsSigWcType` because the context is allowed to be a single wildcard:

      deriving instance _ => Eq (Foo a)

  Which signifies that the context should be inferred.

- deriv_strategy :: Maybe (LDerivStrategy pass)
- deriv_overlap_mode :: Maybe (XRec pass OverlapMode)
  - `AnnKeywordId` : `AnnDeriving`, `AnnInstance`, `AnnStock`, `AnnAnyClass`, `AnnNewtype`, `AnnOpen`,`AnnClose`

XDerivDecl !(XXDerivDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (DerivDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DerivDecl GhcRn) -> HieM [HieAST Type]
type Anno (DerivDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DerivDecl (GhcPass p)) = SrcSpanAnnA

type LDerivDecl pass = XRec pass (DerivDecl pass) #

Located stand-alone 'deriving instance' declaration

data InstDecl pass #

Instance Declaration

Constructors

ClsInstD |

Fields

- cid_d_ext :: XClsInstD pass
- cid_inst :: ClsInstDecl pass

DataFamInstD |

Fields

- dfid_ext :: XDataFamInstD pass
- dfid_inst :: DataFamInstDecl pass

TyFamInstD |

Fields

- tfid_ext :: XTyFamInstD pass
- tfid_inst :: TyFamInstDecl pass

XInstDecl !(XXInstDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (InstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (InstDecl GhcRn) -> HieM [HieAST Type]
type Anno (InstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (InstDecl (GhcPass p)) = SrcSpanAnnA

type LInstDecl pass = XRec pass (InstDecl pass) #

Located Instance Declaration

data ClsInstDecl pass #

Class Instance Declaration - `AnnKeywordId` : `AnnInstance`, `AnnWhere`, `AnnOpen`,`AnnClose`, For details on above see Note [exact print annotations] in GHC.Parser.Annotation

Constructors

ClsInstDecl |

Fields

- cid_ext :: XCClsInstDecl pass
- cid_poly_ty :: LHsSigType pass
- cid_binds :: LHsBinds pass
- cid_sigs :: [LSig pass]
- cid_tyfam_insts :: [LTyFamInstDecl pass]
- cid_datafam_insts :: [LDataFamInstDecl pass]
- cid_overlap_mode :: Maybe (XRec pass OverlapMode)
  - `AnnKeywordId` : `AnnOpen`, `AnnClose`,

XClsInstDecl !(XXClsInstDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (ClsInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ClsInstDecl GhcRn) -> HieM [HieAST Type]
type Anno (ClsInstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (ClsInstDecl (GhcPass p)) = SrcSpanAnnA

type LClsInstDecl pass = XRec pass (ClsInstDecl pass) #

Located Class Instance Declaration

data FamEqn pass rhs #

Family Equation

One equation in a type family instance declaration, data family instance declaration, or type family default. See Note [Type family instance declarations in HsSyn] See Note [Family instance declaration binders]

Constructors

FamEqn |

Fields

- feqn_ext :: XCFamEqn pass rhs
- feqn_tycon :: LIdP pass
- feqn_bndrs :: HsOuterFamEqnTyVarBndrs pass

  Optional quantified type vars

- feqn_pats :: HsTyPats pass
- feqn_fixity :: LexicalFixity

  Fixity used in the declaration

- feqn_rhs :: rhs
  - `AnnKeywordId` : `AnnEqual`

XFamEqn !(XXFamEqn pass rhs) |

#### Instances

Instances details

ToHie (TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (FamEqn GhcRn (HsDataDefn GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (HsDataDefn GhcRn)) -> HieM [HieAST Type]
(HasLoc a, HiePass p) => HasLoc (FamEqn (GhcPass p) a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: FamEqn (GhcPass p) a -> SrcSpan
(ToHie rhs, HasLoc rhs) => ToHie (FamEqn GhcRn rhs) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: FamEqn GhcRn rhs -> HieM [HieAST Type]
type Anno (FamEqn (GhcPass p) _1) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn (GhcPass p) _1) = SrcSpanAnnA
type Anno (FamEqn (GhcPass p) _1) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn (GhcPass p) _1) = SrcSpanAnnA
type Anno (FamEqn p (LocatedA (HsType p))) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn p (LocatedA (HsType p))) = SrcSpanAnnA

newtype DataFamInstDecl pass #

Data Family Instance Declaration

Constructors

DataFamInstDecl

- `AnnKeywordId` : `AnnData`, `AnnNewType`,`AnnInstance`, `AnnDcolon` `AnnWhere`,`AnnOpen`, `AnnClose`

Fields

- dfid_eqn :: FamEqn pass (HsDataDefn pass)

#### Instances

Instances details

ToHie (LocatedA (DataFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DataFamInstDecl GhcRn) -> HieM [HieAST Type]
type Anno (DataFamInstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (DataFamInstDecl (GhcPass p)) = SrcSpanAnnA

type LDataFamInstDecl pass = XRec pass (DataFamInstDecl pass) #

Located Data Family Instance Declaration

data TyFamInstDecl pass #

Type Family Instance Declaration

Constructors

TyFamInstDecl

- `AnnKeywordId` : `AnnType`, `AnnInstance`,

Fields

- tfid_xtn :: XCTyFamInstDecl pass
- tfid_eqn :: TyFamInstEqn pass

XTyFamInstDecl !(XXTyFamInstDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (TyFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyFamInstDecl GhcRn) -> HieM [HieAST Type]
type Anno (TyFamInstDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (TyFamInstDecl (GhcPass p)) = SrcSpanAnnA

type LTyFamInstDecl pass = XRec pass (TyFamInstDecl pass) #

Located Type Family Instance Declaration

type LTyFamDefltDecl pass = XRec pass (TyFamDefltDecl pass) #

Located type family default declarations.

type TyFamDefltDecl = TyFamInstDecl #

Type family default declarations. A convenient synonym for `TyFamInstDecl`. See `Note [Type family instance declarations in HsSyn]`.

type TyFamInstEqn pass = FamEqn pass (LHsType pass) #

Type Family Instance Equation

type HsTyPats pass = [LHsTypeArg pass] #

Haskell Type Patterns

type LTyFamInstEqn pass #

Arguments

= XRec pass (TyFamInstEqn pass) | May have `AnnKeywordId` : `AnnSemi` when in a list

Located Type Family Instance Equation

data HsConDeclGADTDetails pass #

The arguments in a GADT constructor. Unlike Haskell98-style constructors, GADT constructors cannot be declared with infix syntax. As a result, we do not use `HsConDetails` here, as `InfixCon` would be an unrepresentable state. (There is a notion of infix GADT constructors for the purposes of derived Show instances—see Note [Infix GADT constructors] in GHC.Tc.TyCl—but that is an orthogonal concern.)

Constructors

PrefixConGADT [HsScaled pass (LBangType pass)] |
RecConGADT (XRec pass [LConDeclField pass]) (LHsUniToken "->" "\8594" pass) |

#### Instances

Instances details

ToHie (HsConDeclGADTDetails GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsConDeclGADTDetails GhcRn -> HieM [HieAST Type]

type HsConDeclH98Details pass = HsConDetails Void (HsScaled pass (LBangType pass)) (XRec pass [LConDeclField pass]) #

The arguments in a Haskell98-style data constructor.

data ConDecl pass #

    data T b = forall a. Eq a => MkT a b
      MkT :: forall b a. Eq a => MkT a b

    data T b where
         MkT1 :: Int -> T Int

    data T = Int MkT Int
           | MkT2

    data T a where
         Int MkT Int :: T Int

- `AnnKeywordId`s : `AnnOpen`, `AnnDotdot`,`AnnCLose`, `AnnEqual`,`AnnVbar`, `AnnDarrow`,`AnnDarrow`, `AnnForall`,`AnnDot`

data Constructor Declaration

Constructors

ConDeclGADT |

Fields

- con_g_ext :: XConDeclGADT pass
- con_names :: NonEmpty (LIdP pass)
- con_dcolon :: !(LHsUniToken "::" "\8759" pass)
- con_bndrs :: XRec pass (HsOuterSigTyVarBndrs pass)

  The outermost type variable binders, be they explicit or implicit. The `XRec` is used to anchor exact print annotations, AnnForall and AnnDot.

- con_mb_cxt :: Maybe (LHsContext pass)

  User-written context (if any)

- con_g_args :: HsConDeclGADTDetails pass

  Arguments; never infix

- con_res_ty :: LHsType pass

  Result type

- con_doc :: Maybe (LHsDoc pass)

  A possible Haddock comment.

ConDeclH98 |

Fields

- con_ext :: XConDeclH98 pass
- con_name :: LIdP pass
- con_forall :: Bool

  True = explicit user-written forall e.g. data T a = forall b. MkT b (b->a) con_ex_tvs = {b} False => con_ex_tvs is empty

- con_ex_tvs :: [LHsTyVarBndr Specificity pass]

  Existentials only

- con_mb_cxt :: Maybe (LHsContext pass)

  User-written context (if any)

- con_args :: HsConDeclH98Details pass

  Arguments; can be infix

- con_doc :: Maybe (LHsDoc pass)

  A possible Haddock comment.

XConDecl !(XXConDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (ConDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ConDecl GhcRn) -> HieM [HieAST Type]
HasHaddock (LocatedA (ConDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (ConDecl GhcPs) -> HdkA (LocatedA (ConDecl GhcPs))
type Anno (ConDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (ConDecl (GhcPass p)) = SrcSpanAnnA

type LConDecl pass #

Arguments

= XRec pass (ConDecl pass) | May have `AnnKeywordId` : `AnnSemi` when in a GADT constructor list

Located data Constructor Declaration

data DataDefnCons a #

Whether a data-type declaration is `data` or `newtype`, and its constructors.

Constructors

NewTypeCon a |
DataTypeCons Bool [a] |

#### Instances

Instances details

Foldable DataDefnCons |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

fold :: Monoid m => DataDefnCons m -> m #

foldMap :: Monoid m => (a -> m) -> DataDefnCons a -> m #

foldMap' :: Monoid m => (a -> m) -> DataDefnCons a -> m #

foldr :: (a -> b -> b) -> b -> DataDefnCons a -> b #

foldr' :: (a -> b -> b) -> b -> DataDefnCons a -> b #

foldl :: (b -> a -> b) -> b -> DataDefnCons a -> b #

foldl' :: (b -> a -> b) -> b -> DataDefnCons a -> b #

foldr1 :: (a -> a -> a) -> DataDefnCons a -> a #

foldl1 :: (a -> a -> a) -> DataDefnCons a -> a #

toList :: DataDefnCons a -> [a] #

null :: DataDefnCons a -> Bool #

length :: DataDefnCons a -> Int #

elem :: Eq a => a -> DataDefnCons a -> Bool #

maximum :: Ord a => DataDefnCons a -> a #

minimum :: Ord a => DataDefnCons a -> a #

sum :: Num a => DataDefnCons a -> a #

product :: Num a => DataDefnCons a -> a #

Traversable DataDefnCons |
Instance details Defined in Language.Haskell.Syntax.Decls Methods traverse :: Applicative f => (a -> f b) -> DataDefnCons a -> f (DataDefnCons b) # sequenceA :: Applicative f => DataDefnCons (f a) -> f (DataDefnCons a) # mapM :: Monad m => (a -> m b) -> DataDefnCons a -> m (DataDefnCons b) # sequence :: Monad m => DataDefnCons (m a) -> m (DataDefnCons a) #
Functor DataDefnCons |
Instance details Defined in Language.Haskell.Syntax.Decls Methods fmap :: (a -> b) -> DataDefnCons a -> DataDefnCons b # (<$) :: a -> DataDefnCons b -> DataDefnCons a #
Data a => Data (DataDefnCons a) |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DataDefnCons a -> c (DataDefnCons a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (DataDefnCons a) #

toConstr :: DataDefnCons a -> Constr #

dataTypeOf :: DataDefnCons a -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (DataDefnCons a)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (DataDefnCons a)) #

gmapT :: (forall b. Data b => b -> b) -> DataDefnCons a -> DataDefnCons a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DataDefnCons a -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DataDefnCons a -> r #

gmapQ :: (forall d. Data d => d -> u) -> DataDefnCons a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> DataDefnCons a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DataDefnCons a -> m (DataDefnCons a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DataDefnCons a -> m (DataDefnCons a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DataDefnCons a -> m (DataDefnCons a) #

HasLoc a => HasLoc (DataDefnCons a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: DataDefnCons a -> SrcSpan
ToHie a => ToHie (DataDefnCons a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: DataDefnCons a -> HieM [HieAST Type]
Eq a => Eq (DataDefnCons a) |
Instance details Defined in Language.Haskell.Syntax.Decls Methods (==) :: DataDefnCons a -> DataDefnCons a -> Bool # (/=) :: DataDefnCons a -> DataDefnCons a -> Bool #

type LStandaloneKindSig pass = XRec pass (StandaloneKindSig pass) #

Located Standalone Kind Signature

data DerivClauseTys pass #

The types mentioned in a single `deriving` clause. This can come in two forms, `DctSingle` or `DctMulti`, depending on whether the types are surrounded by enclosing parentheses or not. These parentheses are semantically different than `HsParTy`. For example, `deriving ()` means "derive zero classes" rather than "derive an instance of the 0-tuple".

`DerivClauseTys` use `LHsSigType` because `deriving` clauses can mention type variables that aren't bound by the datatype, e.g.

    data T b = ... deriving (C [a])

should produce a derived instance for `C [a] (T b)`.

Constructors

DctSingle (XDctSingle pass) (LHsSigType pass) | A `deriving` clause with a single type. Moreover, that type can only be a type constructor without any arguments. Example: `deriving Eq`
DctMulti (XDctMulti pass) [LHsSigType pass] | A `deriving` clause with a comma-separated list of types, surrounded by enclosing parentheses. Example: `deriving (Eq, C a)`
XDerivClauseTys !(XXDerivClauseTys pass) |

#### Instances

Instances details

ToHie (LocatedC (DerivClauseTys GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedC (DerivClauseTys GhcRn) -> HieM [HieAST Type]
HasHaddock (LocatedC (DerivClauseTys GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedC (DerivClauseTys GhcPs) -> HdkA (LocatedC (DerivClauseTys GhcPs))
type Anno (DerivClauseTys (GhcPass _1)) |
Instance details Defined in GHC.Hs.Decls type Anno (DerivClauseTys (GhcPass _1)) = SrcSpanAnnC

type LDerivClauseTys pass = XRec pass (DerivClauseTys pass) #

data HsDerivingClause pass #

A single `deriving` clause of a data declaration.

- `AnnKeywordId` : `AnnDeriving`, `AnnStock`, `AnnAnyClass`, `AnnNewtype`, `AnnOpen`,`AnnClose`

Constructors

HsDerivingClause |

Fields

- deriv_clause_ext :: XCHsDerivingClause pass
- deriv_clause_strategy :: Maybe (LDerivStrategy pass)

  The user-specified strategy (if any) to use when deriving `deriv_clause_tys`.

- deriv_clause_tys :: LDerivClauseTys pass

  The types to derive.

XHsDerivingClause !(XXHsDerivingClause pass) |

#### Instances

Instances details

ToHie (Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)] -> HieM [HieAST Type]
HasHaddock (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)]) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)] -> HdkA (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)])
ToHie (LocatedAn NoEpAnns (HsDerivingClause GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (HsDerivingClause GhcRn) -> HieM [HieAST Type]
HasHaddock (LocatedAn NoEpAnns (HsDerivingClause GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedAn NoEpAnns (HsDerivingClause GhcPs) -> HdkA (LocatedAn NoEpAnns (HsDerivingClause GhcPs))
type Anno (HsDerivingClause (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (HsDerivingClause (GhcPass p)) = SrcAnn NoEpAnns

type LHsDerivingClause pass = XRec pass (HsDerivingClause pass) #

type HsDeriving pass #

Arguments

= [LHsDerivingClause pass] | The optional `deriving` clauses of a data declaration. Clauses is plural because one can specify multiple deriving clauses using the `-XDerivingStrategies` language extension. The list of `LHsDerivingClause`s corresponds to exactly what the user requested to derive, in order. If no deriving clauses were specified, the list is empty.

Haskell Deriving clause

data HsDataDefn pass #

Haskell Data type Definition

Constructors

HsDataDefn | Declares a data type or newtype, giving its constructors `data/newtype T a = constrs data/newtype instance T [a] = constrs`

Fields

- dd_ext :: XCHsDataDefn pass
- dd_ctxt :: Maybe (LHsContext pass)

  Context

- dd_cType :: Maybe (XRec pass CType)
- dd_kindSig :: Maybe (LHsKind pass)

  Optional kind signature.

  `(Just k)` for a GADT-style `data`, or `data instance` decl, with explicit kind sig

  Always `Nothing` for H98-syntax decls

- dd_cons :: DataDefnCons (LConDecl pass)

  Data constructors

  For `data T a = T1 | T2 a` the `LConDecl`s all have `ConDeclH98`. For `data T a where { T1 :: T a }` the `LConDecls` all have `ConDeclGADT`.

- dd_derivs :: HsDeriving pass

  Optional 'deriving' clause

XHsDataDefn !(XXHsDataDefn pass) |

#### Instances

Instances details

HasLoc (HsDataDefn GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: HsDataDefn GhcRn -> SrcSpan
ToHie (TScoped (FamEqn GhcRn (HsDataDefn GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (HsDataDefn GhcRn)) -> HieM [HieAST Type]
ToHie (HsDataDefn GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsDataDefn GhcRn -> HieM [HieAST Type]
HasHaddock (HsDataDefn GhcPs) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: HsDataDefn GhcPs -> HdkA (HsDataDefn GhcPs)

data FamilyInfo pass #

Constructors

DataFamily |
OpenTypeFamily |
ClosedTypeFamily (Maybe [LTyFamInstEqn pass]) | `Nothing` if we're in an hs-boot file and the user said "type family Foo x where .."

#### Instances

Instances details

ToHie (FamilyInfo GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: FamilyInfo GhcRn -> HieM [HieAST Type]

type LInjectivityAnn pass = XRec pass (InjectivityAnn pass) #

Located Injectivity Annotation

data FamilyDecl pass #

type Family Declaration

Constructors

FamilyDecl |

Fields

- fdExt :: XCFamilyDecl pass
- fdInfo :: FamilyInfo pass
- fdTopLevel :: TopLevelFlag
- fdLName :: LIdP pass
- fdTyVars :: LHsQTyVars pass
- fdFixity :: LexicalFixity
- fdResultSig :: LFamilyResultSig pass
- fdInjectivityAnn :: Maybe (LInjectivityAnn pass)

XFamilyDecl !(XXFamilyDecl pass)

- `AnnKeywordId` : `AnnType`, `AnnData`, `AnnFamily`, `AnnWhere`, `AnnOpenP`, `AnnDcolon`, `AnnCloseP`, `AnnEqual`, `AnnRarrow`, `AnnVbar`

#### Instances

Instances details

ToHie (LocatedA (FamilyDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FamilyDecl GhcRn) -> HieM [HieAST Type]
type Anno (FamilyDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (FamilyDecl (GhcPass p)) = SrcSpanAnnA

type LFamilyDecl pass = XRec pass (FamilyDecl pass) #

Located type Family Declaration

data FamilyResultSig pass #

type Family Result Signature

Constructors

NoSig (XNoSig pass)

- `AnnKeywordId` :

KindSig (XCKindSig pass) (LHsKind pass)

- `AnnKeywordId` : `AnnOpenP`,`AnnDcolon`, `AnnCloseP`

TyVarSig (XTyVarSig pass) (LHsTyVarBndr () pass)

- `AnnKeywordId` : `AnnOpenP`,`AnnDcolon`, `AnnCloseP`, `AnnEqual`

XFamilyResultSig !(XXFamilyResultSig pass) |

#### Instances

Instances details

ToHie (RScoped (LocatedAn NoEpAnns (FamilyResultSig GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (FamilyResultSig GhcRn)) -> HieM [HieAST Type]
type Anno (FamilyResultSig (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (FamilyResultSig (GhcPass p)) = SrcAnn NoEpAnns

type LFamilyResultSig pass = XRec pass (FamilyResultSig pass) #

Located type Family Result Signature

data TyClGroup pass #

Type or Class Group

Constructors

TyClGroup |

Fields

- group_ext :: XCTyClGroup pass
- group_tyclds :: [LTyClDecl pass]
- group_roles :: [LRoleAnnotDecl pass]
- group_kisigs :: [LStandaloneKindSig pass]
- group_instds :: [LInstDecl pass]

XTyClGroup !(XXTyClGroup pass) |

#### Instances

Instances details

ToHie (TyClGroup GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TyClGroup GhcRn -> HieM [HieAST Type]

type LHsFunDep pass = XRec pass (FunDep pass) #

pattern XFunDep :: !(XXFunDep pass) -> FunDep pass #

data TyClDecl pass #

A type or class declaration.

Constructors

FamDecl

    type/data family T :: *->*

- `AnnKeywordId` : `AnnType`, `AnnData`, `AnnFamily`,`AnnDcolon`, `AnnWhere`,`AnnOpenP`, `AnnDcolon`,`AnnCloseP`, `AnnEqual`,`AnnRarrow`, `AnnVbar`

Fields

- tcdFExt :: XFamDecl pass
- tcdFam :: FamilyDecl pass

SynDecl

`type` declaration

- `AnnKeywordId` : `AnnType`, `AnnEqual`,

Fields

- tcdSExt :: XSynDecl pass

  Post renamer, FVs

- tcdLName :: LIdP pass

  Type constructor

- tcdTyVars :: LHsQTyVars pass

  Type variables; for an associated type these include outer binders

- tcdFixity :: LexicalFixity

  Fixity used in the declaration

- tcdRhs :: LHsType pass

  RHS of type declaration

DataDecl

`data` declaration

- `AnnKeywordId` : `AnnData`, `AnnFamily`, `AnnNewType`, `AnnNewType`,`AnnDcolon` `AnnWhere`,

Fields

- tcdDExt :: XDataDecl pass

  Post renamer, CUSK flag, FVs

- tcdLName :: LIdP pass

  Type constructor

- tcdTyVars :: LHsQTyVars pass

  Type variables; for an associated type these include outer binders

- tcdFixity :: LexicalFixity

  Fixity used in the declaration

- tcdDataDefn :: HsDataDefn pass

ClassDecl

- `AnnKeywordId` : `AnnClass`, `AnnWhere`,`AnnOpen`, `AnnClose`
- The tcdFDs will have `AnnVbar`, `AnnComma` `AnnRarrow` For details on above see Note [exact print annotations] in GHC.Parser.Annotation

Fields

- tcdCExt :: XClassDecl pass

  Post renamer, FVs

- tcdLayout :: !(LayoutInfo pass)

  Explicit or virtual braces See Note [Class LayoutInfo]

- tcdCtxt :: Maybe (LHsContext pass)

  Context...

- tcdLName :: LIdP pass

  Type constructor

- tcdTyVars :: LHsQTyVars pass

  Type variables; for an associated type these include outer binders

- tcdFixity :: LexicalFixity

  Fixity used in the declaration

- tcdFDs :: [LHsFunDep pass]

  Functional deps

- tcdSigs :: [LSig pass]

  Methods' signatures

- tcdMeths :: LHsBinds pass

  Default methods

- tcdATs :: [LFamilyDecl pass]

  Associated types;

- tcdATDefs :: [LTyFamDefltDecl pass]

  Associated type defaults

- tcdDocs :: [LDocDecl pass]

  Haddock docs

XTyClDecl !(XXTyClDecl pass) |

#### Instances

Instances details

ToHie (LocatedA (TyClDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyClDecl GhcRn) -> HieM [HieAST Type]
type Anno (TyClDecl (GhcPass p)) |
Instance details Defined in GHC.Hs.Decls type Anno (TyClDecl (GhcPass p)) = SrcSpanAnnA

type LTyClDecl pass = XRec pass (TyClDecl pass) #

Located Declaration of a Type or Class

data SpliceDecoration #

A splice can appear with various decorations wrapped around it. This data type captures explicitly how it was originally written, for use in the pretty printer.

Constructors

DollarSplice | $splice
BareSplice | bare splice

#### Instances

Instances details

Data SpliceDecoration |

Instance details

Defined in Language.Haskell.Syntax.Decls

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SpliceDecoration -> c SpliceDecoration #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SpliceDecoration #

toConstr :: SpliceDecoration -> Constr #

dataTypeOf :: SpliceDecoration -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SpliceDecoration) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SpliceDecoration) #

gmapT :: (forall b. Data b => b -> b) -> SpliceDecoration -> SpliceDecoration #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SpliceDecoration -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SpliceDecoration -> r #

gmapQ :: (forall d. Data d => d -> u) -> SpliceDecoration -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SpliceDecoration -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SpliceDecoration -> m SpliceDecoration #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SpliceDecoration -> m SpliceDecoration #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SpliceDecoration -> m SpliceDecoration #

Show SpliceDecoration |
Instance details Defined in Language.Haskell.Syntax.Decls Methods showsPrec :: Int -> SpliceDecoration -> ShowS # show :: SpliceDecoration -> String # showList :: [SpliceDecoration] -> ShowS #
Eq SpliceDecoration |
Instance details Defined in Language.Haskell.Syntax.Decls Methods (==) :: SpliceDecoration -> SpliceDecoration -> Bool # (/=) :: SpliceDecoration -> SpliceDecoration -> Bool #

type LSpliceDecl pass = XRec pass (SpliceDecl pass) #

Located Splice Declaration

data HsGroup p #

Haskell Group

A `HsDecl` is categorised into a `HsGroup` before being fed to the renamer.

Constructors

HsGroup |

Fields

- hs_ext :: XCHsGroup p
- hs_valds :: HsValBinds p
- hs_splcds :: [LSpliceDecl p]
- hs_tyclds :: [TyClGroup p]
- hs_derivds :: [LDerivDecl p]
- hs_fixds :: [LFixitySig p]
- hs_defds :: [LDefaultDecl p]
- hs_fords :: [LForeignDecl p]
- hs_warnds :: [LWarnDecls p]
- hs_annds :: [LAnnDecl p]
- hs_ruleds :: [LRuleDecls p]
- hs_docs :: [LDocDecl p]

XHsGroup !(XXHsGroup p) |

data HsDecl p #

A Haskell Declaration

Constructors

TyClD (XTyClD p) (TyClDecl p) | Type or Class Declaration
InstD (XInstD p) (InstDecl p) | Instance declaration
DerivD (XDerivD p) (DerivDecl p) | Deriving declaration
ValD (XValD p) (HsBind p) | Value declaration
SigD (XSigD p) (Sig p) | Signature declaration
KindSigD (XKindSigD p) (StandaloneKindSig p) | Standalone kind signature
DefD (XDefD p) (DefaultDecl p) | 'default' declaration
ForD (XForD p) (ForeignDecl p) | Foreign declaration
WarningD (XWarningD p) (WarnDecls p) | Warning declaration
AnnD (XAnnD p) (AnnDecl p) | Annotation declaration
RuleD (XRuleD p) (RuleDecls p) | Rule declaration
SpliceD (XSpliceD p) (SpliceDecl p) | Splice declaration (Includes quasi-quotes)
DocD (XDocD p) (DocDecl p) | Documentation comment declaration
RoleAnnotD (XRoleAnnotD p) (RoleAnnotDecl p) | Role annotation declaration
XHsDecl !(XXHsDecl p) |

#### Instances

Instances details

HasHaddock (LocatedA (HsDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsDecl GhcPs) -> HdkA (LocatedA (HsDecl GhcPs))
HasHaddock (HsDecl GhcPs) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: HsDecl GhcPs -> HdkA (HsDecl GhcPs)
type Anno (HsDecl (GhcPass _1)) |
Instance details Defined in GHC.Hs.Decls type Anno (HsDecl (GhcPass _1)) = SrcSpanAnnA

type LHsDecl p #

Arguments

= XRec p (HsDecl p)

When in a list this may have

- `AnnKeywordId` : `AnnSemi`

hsGroupInstDecls :: HsGroup id -> [LInstDecl id] #

isDataDecl :: TyClDecl pass -> Bool #

`True` = argument is a `data`/`newtype` declaration.

isSynDecl :: TyClDecl pass -> Bool #

type or type instance declaration

isClassDecl :: TyClDecl pass -> Bool #

type class

isFamilyDecl :: TyClDecl pass -> Bool #

type/data family declaration

isTypeFamilyDecl :: TyClDecl pass -> Bool #

type family declaration

isOpenTypeFamilyInfo :: FamilyInfo pass -> Bool #

open type family info

isClosedTypeFamilyInfo :: FamilyInfo pass -> Bool #

closed type family info

isDataFamilyDecl :: TyClDecl pass -> Bool #

data family declaration

tyClDeclTyVars :: TyClDecl pass -> LHsQTyVars pass #

tyClGroupTyClDecls :: [TyClGroup pass] -> [LTyClDecl pass] #

tyClGroupInstDecls :: [TyClGroup pass] -> [LInstDecl pass] #

tyClGroupRoleDecls :: [TyClGroup pass] -> [LRoleAnnotDecl pass] #

tyClGroupKindSigs :: [TyClGroup pass] -> [LStandaloneKindSig pass] #

familyInfoTyConFlavour #

Arguments

:: Maybe tc | Just cls = this is an associated family of class cls
-> FamilyInfo pass |
-> TyConFlavour tc |

dataDefnConsNewOrData :: DataDefnCons a -> NewOrData #

isTypeDataDefnCons :: DataDefnCons a -> Bool #

Are the constructors within a `type data` declaration? See Note [Type data declarations] in GHC.Rename.Module.

firstDataDefnCon :: DataDefnCons a -> Maybe a #

Retrieve the first data constructor in a `DataDefnCons` (if one exists).

collectRuleBndrSigTys :: [RuleBndr pass] -> [HsPatSigType pass] #

docDeclDoc :: DocDecl pass -> LHsDoc pass #

annProvenanceName_maybe :: UnXRec p => AnnProvenance p -> Maybe (IdP p) #

data HsDoFlavour #

Constructors

DoExpr (Maybe ModuleName)

ModuleName.
  do { ... }

MDoExpr (Maybe ModuleName)

ModuleName.
  mdo { ... } ie recursive do-expression

GhciStmtCtxt | A command-line Stmt in GHCi pat <- rhs
ListComp |
MonadComp |

data HsArrowMatchContext #

Haskell arrow match context.

Constructors

ProcExpr | A proc expression
ArrowCaseAlt | A case alternative inside arrow notation
ArrowLamCaseAlt LamCaseVariant | A case or cases alternative inside arrow notation
KappaExpr | An arrow kappa abstraction

data HsStmtContext p #

Haskell Statement Context.

Constructors

HsDoStmt HsDoFlavour | Context for HsDo (do-notation and comprehensions)
PatGuard (HsMatchContext p) | Pattern guard for specified thing
ParStmtCtxt (HsStmtContext p) | A branch of a parallel stmt
TransStmtCtxt (HsStmtContext p) | A branch of a transform stmt
ArrowExpr | do-notation in an arrow-command context

#### Instances

Instances details

HiePass p => ToHie (HsStmtContext (GhcPass p)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsStmtContext (GhcPass p) -> HieM [HieAST Type]

data HsMatchContext p #

Haskell Match Context

Context of a pattern match. This is more subtle than it would seem. See Note [FunBind vs PatBind].

Constructors

FunRhs | A pattern matching on an argument of a function binding

Fields

- mc_fun :: LIdP (NoGhcTc p)

  function binder of `f` See Note [mc_fun field of FunRhs] See #20415 for a long discussion about this field and why it uses NoGhcTc.

- mc_fixity :: LexicalFixity

  fixing of `f`

- mc_strictness :: SrcStrictness

  was `f` banged? See Note [FunBind vs PatBind]

LambdaExpr | Patterns of a lambda
CaseAlt | Patterns and guards in a case alternative
LamCaseAlt LamCaseVariant | Patterns and guards in `case` and `cases`
IfAlt | Guards of a multi-way if alternative
ArrowMatchCtxt HsArrowMatchContext | A pattern match inside arrow notation
PatBindRhs | A pattern binding eg [y] <- e = e
PatBindGuards | Guards of pattern bindings, e.g., (Just b) | Just _ <- x = e | otherwise = e'
RecUpd | Record update [used only in GHC.HsToCore.Expr to tell matchWrapper what sort of runtime error message to generate]
StmtCtxt (HsStmtContext p) | Pattern of a do-stmt, list comprehension, pattern guard, etc
ThPatSplice | A Template Haskell pattern splice
ThPatQuote | A Template Haskell pattern quotation [p| (a,b) |]
PatSyn | A pattern synonym declaration

#### Instances

Instances details

HiePass p => ToHie (HsMatchContext (GhcPass p)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsMatchContext (GhcPass p) -> HieM [HieAST Type]

data ArithSeqInfo id #

Arithmetic Sequence Information

Constructors

From (LHsExpr id) |
FromThen (LHsExpr id) (LHsExpr id) |
FromTo (LHsExpr id) (LHsExpr id) |
FromThenTo (LHsExpr id) (LHsExpr id) (LHsExpr id) |

#### Instances

Instances details

ToHie (LHsExpr a) => ToHie (ArithSeqInfo a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: ArithSeqInfo a -> HieM [HieAST Type]

data HsQuote p #

Haskell (Untyped) Quote = Expr + Pat + Type + Var

Constructors

ExpBr (XExpBr p) (LHsExpr p) |
PatBr (XPatBr p) (LPat p) |
DecBrL (XDecBrL p) [LHsDecl p] |
DecBrG (XDecBrG p) (HsGroup p) |
TypBr (XTypBr p) (LHsType p) |
VarBr (XVarBr p) Bool (LIdP p) |
XQuote !(XXQuote p) |

#### Instances

Instances details

ToHie (HsQuote GhcRn) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsQuote GhcRn -> HieM [HieAST Type]

data ApplicativeArg idL #

Applicative Argument

Constructors

ApplicativeArgOne |

Fields

- xarg_app_arg_one :: XApplicativeArgOne idL

  The fail operator, after renaming

  The fail operator is needed if this is a BindStmt where the pattern can fail. E.g.: (Just a) <- stmt The fail operator will be invoked if the pattern match fails. It is also used for guards in MonadComprehensions. The fail operator is Nothing if the pattern match can't fail

- app_arg_pattern :: LPat idL
- arg_expr :: LHsExpr idL
- is_body_stmt :: Bool

  True = was a BodyStmt, False = was a BindStmt. See Note [Applicative BodyStmt]

ApplicativeArgMany |

Fields

- xarg_app_arg_many :: XApplicativeArgMany idL
- app_stmts :: [ExprLStmt idL]
- final_expr :: HsExpr idL
- bv_pattern :: LPat idL
- stmt_context :: HsDoFlavour

  context of the do expression, used in pprArg

XApplicativeArg !(XXApplicativeArg idL) |

#### Instances

Instances details

HiePass p => ToHie (RScoped (ApplicativeArg (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (ApplicativeArg (GhcPass p)) -> HieM [HieAST Type]

type FailOperator id = Maybe (SyntaxExpr id) #

The fail operator

This is used for `.. <-` "bind statements" in do notation, including non-monadic "binds" in applicative.

The fail operator is 'Just expr' if it potentially fail monadically. if the pattern match cannot fail, or shouldn't fail monadically (regular incomplete pattern exception), it is `Nothing`.

See Note [Monad fail : Rebindable syntax, overloaded strings] for the type of expression in the `Just` case, and why it is so.

See Note [Failing pattern matches in Stmts] for which contexts for '`BindStmt`'s should use the monadic fail and which shouldn't.

data TransForm #

Constructors

ThenForm |
GroupForm |

#### Instances

Instances details

Data TransForm |

Instance details

Defined in Language.Haskell.Syntax.Expr

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TransForm -> c TransForm #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TransForm #

toConstr :: TransForm -> Constr #

dataTypeOf :: TransForm -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TransForm) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TransForm) #

gmapT :: (forall b. Data b => b -> b) -> TransForm -> TransForm #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TransForm -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TransForm -> r #

gmapQ :: (forall d. Data d => d -> u) -> TransForm -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TransForm -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TransForm -> m TransForm #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TransForm -> m TransForm #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TransForm -> m TransForm #

data StmtLR idL idR body #

Exact print annotations when in qualifier lists or guards - `AnnKeywordId` : `AnnVbar`, `AnnComma`,`AnnThen`, `AnnBy`,`AnnBy`, `AnnGroup`,`AnnUsing`

Constructors

LastStmt (XLastStmt idL idR body) body (Maybe Bool) (SyntaxExpr idR) |
BindStmt |

Fields

- (XBindStmt idL idR body)

  Post renaming has optional fail and bind / (>>=) operator. Post typechecking, also has multiplicity of the argument and the result type of the function passed to bind; that is, (P, S) in (>>=) :: Q -> (R % P -> S) -> T See Note [The type of bind in Stmts]

- (LPat idL)
- body

ApplicativeStmt (XApplicativeStmt idL idR body) [(SyntaxExpr idR, ApplicativeArg idL)] (Maybe (SyntaxExpr idR))

`ApplicativeStmt` represents an applicative expression built with `<$>` and `<*>`. It is generated by the renamer, and is desugared into the appropriate applicative expression by the desugarer, but it is intended to be invisible in error messages.

For full details, see Note [ApplicativeDo] in GHC.Rename.Expr

BodyStmt (XBodyStmt idL idR body) body (SyntaxExpr idR) (SyntaxExpr idR) |

LetStmt (XLetStmt idL idR body) (HsLocalBindsLR idL idR)

- `AnnKeywordId` : `AnnLet` `AnnOpen` `'{'`,`AnnClose` `'}'`,

ParStmt (XParStmt idL idR body) [ParStmtBlock idL idR] (HsExpr idR) (SyntaxExpr idR) |
TransStmt |

Fields

- trS_ext :: XTransStmt idL idR body
- trS_form :: TransForm
- trS_stmts :: [ExprLStmt idL]
- trS_bndrs :: [(IdP idR, IdP idR)]
- trS_using :: LHsExpr idR
- trS_by :: Maybe (LHsExpr idR)
- trS_ret :: SyntaxExpr idR
- trS_bind :: SyntaxExpr idR
- trS_fmap :: HsExpr idR

RecStmt

- `AnnKeywordId` : `AnnRec`

Fields

- recS_ext :: XRecStmt idL idR body
- recS_stmts :: XRec idR [LStmtLR idL idR body]
- recS_later_ids :: [IdP idR]
- recS_rec_ids :: [IdP idR]
- recS_bind_fn :: SyntaxExpr idR
- recS_ret_fn :: SyntaxExpr idR
- recS_mfix_fn :: SyntaxExpr idR

XStmtLR !(XXStmtLR idL idR body) |

#### Instances

Instances details

(ToHie (LocatedA (body (GhcPass p))), AnnoBody p body, HiePass p) => ToHie (RScoped (LocatedA (Stmt (GhcPass p) (LocatedA (body (GhcPass p)))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedA (Stmt (GhcPass p) (LocatedA (body (GhcPass p))))) -> HieM [HieAST Type]
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) = SrcSpanAnnA
type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA
type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) = SrcSpanAnnA

type GhciStmt id = Stmt id (LHsExpr id) #

Ghci Statement

type GhciLStmt id = LStmt id (LHsExpr id) #

Ghci Located Statement

type GuardStmt id = Stmt id (LHsExpr id) #

Guard Statement

type GuardLStmt id = LStmt id (LHsExpr id) #

Guard Located Statement

type ExprStmt id = Stmt id (LHsExpr id) #

Expression Statement

type ExprLStmt id = LStmt id (LHsExpr id) #

Expression Located Statement

type CmdStmt id = Stmt id (LHsCmd id) #

Command Statement

type CmdLStmt id = LStmt id (LHsCmd id) #

Command Located Statement

type LStmtLR idL idR body = XRec idL (StmtLR idL idR body) #

Located Statement with separate Left and Right id's

type LStmt id body = XRec id (StmtLR id id body) #

Located `do` block Statement

data GRHS p body #

Guarded Right Hand Side.

Constructors

GRHS (XCGRHS p body) [GuardLStmt p] body |
XGRHS !(XXGRHS p body) |

#### Instances

Instances details

(ToHie (LocatedA (body (GhcPass p))), HiePass p, AnnoBody p body) => ToHie (LocatedAn NoEpAnns (GRHS (GhcPass p) (LocatedA (body (GhcPass p))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) -> HieM [HieAST Type]
type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) = SrcAnn NoEpAnns

type LGRHS id body = XRec id (GRHS id body) #

Located Guarded Right-Hand Side

type LMatch id body = XRec id (Match id body) #

Located Match

May have `AnnKeywordId` : `AnnSemi` when in a list

type HsRecordBinds p = HsRecFields p (LHsExpr p) #

Haskell Record Bindings

type LHsCmdTop p = XRec p (HsCmdTop p) #

Top-level command, introducing a new arrow. This may occur inside a proc (where the stack is empty) or as an argument of a command-forming operator.

Located Haskell Top-level Command

data HsArrAppType #

Haskell arrow application type.

Constructors

HsHigherOrderApp | First order arrow application `-<`
HsFirstOrderApp | Higher order arrow application `-<<`

#### Instances

Instances details

Data HsArrAppType |

Instance details

Defined in Language.Haskell.Syntax.Expr

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsArrAppType -> c HsArrAppType #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HsArrAppType #

toConstr :: HsArrAppType -> Constr #

dataTypeOf :: HsArrAppType -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HsArrAppType) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HsArrAppType) #

gmapT :: (forall b. Data b => b -> b) -> HsArrAppType -> HsArrAppType #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsArrAppType -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsArrAppType -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsArrAppType -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsArrAppType -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsArrAppType -> m HsArrAppType #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsArrAppType -> m HsArrAppType #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsArrAppType -> m HsArrAppType #

data HsCmd id #

Haskell Command (e.g. a "statement" in an Arrow proc block)

Constructors

HsCmdArrApp (XCmdArrApp id) (LHsExpr id) (LHsExpr id) HsArrAppType Bool

- `AnnKeywordId` : `Annlarrowtail`, `Annrarrowtail`,`AnnLarrowtail`, `AnnRarrowtail`

HsCmdArrForm (XCmdArrForm id) (LHsExpr id) LexicalFixity (Maybe Fixity) [LHsCmdTop id]

- `AnnKeywordId` : `AnnOpenB` `'(|'`, `AnnCloseB` `'|)'`

HsCmdApp (XCmdApp id) (LHsCmd id) (LHsExpr id) |

HsCmdLam (XCmdLam id) (MatchGroup id (LHsCmd id))

- `AnnKeywordId` : `AnnLam`, `AnnRarrow`,

HsCmdPar (XCmdPar id) !(LHsToken "(" id) (LHsCmd id) !(LHsToken ")" id)

- `AnnKeywordId` : `AnnOpen` `'('`, `AnnClose` `')'`

HsCmdCase (XCmdCase id) (LHsExpr id) (MatchGroup id (LHsCmd id))

- `AnnKeywordId` : `AnnCase`, `AnnOf`,`AnnOpen` `'{'`, `AnnClose` `'}'`

HsCmdLamCase (XCmdLamCase id) LamCaseVariant (MatchGroup id (LHsCmd id))

Lambda-case

- `AnnKeywordId` : `AnnLam`, `AnnCase`,`AnnOpen` `'{'`, `AnnClose` `'}'`
- `AnnKeywordId` : `AnnLam`, `AnnCases`,`AnnOpen` `'{'`, `AnnClose` `'}'`

HsCmdIf (XCmdIf id) (SyntaxExpr id) (LHsExpr id) (LHsCmd id) (LHsCmd id)

- `AnnKeywordId` : `AnnIf`, `AnnSemi`, `AnnThen`,`AnnSemi`, `AnnElse`,

HsCmdLet (XCmdLet id) !(LHsToken "let" id) (HsLocalBinds id) !(LHsToken "in" id) (LHsCmd id)

- `AnnKeywordId` : `AnnLet`, `AnnOpen` `'{'`, `AnnClose` `'}'`,`AnnIn`

HsCmdDo (XCmdDo id) (XRec id [CmdLStmt id])

- `AnnKeywordId` : `AnnDo`, `AnnOpen`, `AnnSemi`, `AnnVbar`, `AnnClose`

XCmd !(XXCmd id) |

#### Instances

Instances details

HiePass p => ToHie (LocatedA (HsCmd (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsCmd (GhcPass p)) -> HieM [HieAST Type]
DisambECP (HsCmd GhcPs) |

Instance details

Defined in GHC.Parser.PostProcess

Associated Types

type Body (HsCmd GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type Body (HsCmd GhcPs) = HsCmd
type InfixOp (HsCmd GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type InfixOp (HsCmd GhcPs) = HsExpr GhcPs
type FunArg (HsCmd GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type FunArg (HsCmd GhcPs) = HsExpr GhcPs

Methods

ecpFromCmd' :: LHsCmd GhcPs -> PV (LocatedA (HsCmd GhcPs)) #

ecpFromExp' :: LHsExpr GhcPs -> PV (LocatedA (HsCmd GhcPs)) #

mkHsProjUpdatePV :: SrcSpan -> Located [LocatedAn NoEpAnns (DotFieldOcc GhcPs)] -> LocatedA (HsCmd GhcPs) -> Bool -> [AddEpAnn] -> PV (LHsRecProj GhcPs (LocatedA (HsCmd GhcPs))) #

mkHsLamPV :: SrcSpan -> (EpAnnComments -> MatchGroup GhcPs (LocatedA (HsCmd GhcPs))) -> PV (LocatedA (HsCmd GhcPs)) #

mkHsLetPV :: SrcSpan -> LHsToken "let" GhcPs -> HsLocalBinds GhcPs -> LHsToken "in" GhcPs -> LocatedA (HsCmd GhcPs) -> PV (LocatedA (HsCmd GhcPs)) #

superInfixOp :: (DisambInfixOp (InfixOp (HsCmd GhcPs)) => PV (LocatedA (HsCmd GhcPs))) -> PV (LocatedA (HsCmd GhcPs)) #

mkHsOpAppPV :: SrcSpan -> LocatedA (HsCmd GhcPs) -> LocatedN (InfixOp (HsCmd GhcPs)) -> LocatedA (HsCmd GhcPs) -> PV (LocatedA (HsCmd GhcPs)) #

mkHsCasePV :: SrcSpan -> LHsExpr GhcPs -> LocatedL [LMatch GhcPs (LocatedA (HsCmd GhcPs))] -> EpAnnHsCase -> PV (LocatedA (HsCmd GhcPs)) #

mkHsLamCasePV :: SrcSpan -> LamCaseVariant -> LocatedL [LMatch GhcPs (LocatedA (HsCmd GhcPs))] -> [AddEpAnn] -> PV (LocatedA (HsCmd GhcPs)) #

superFunArg :: (DisambECP (FunArg (HsCmd GhcPs)) => PV (LocatedA (HsCmd GhcPs))) -> PV (LocatedA (HsCmd GhcPs)) #

mkHsAppPV :: SrcSpanAnnA -> LocatedA (HsCmd GhcPs) -> LocatedA (FunArg (HsCmd GhcPs)) -> PV (LocatedA (HsCmd GhcPs)) #

mkHsAppTypePV :: SrcSpanAnnA -> LocatedA (HsCmd GhcPs) -> LHsToken "@" GhcPs -> LHsType GhcPs -> PV (LocatedA (HsCmd GhcPs)) #

mkHsIfPV :: SrcSpan -> LHsExpr GhcPs -> Bool -> LocatedA (HsCmd GhcPs) -> Bool -> LocatedA (HsCmd GhcPs) -> AnnsIf -> PV (LocatedA (HsCmd GhcPs)) #

mkHsDoPV :: SrcSpan -> Maybe ModuleName -> LocatedL [LStmt GhcPs (LocatedA (HsCmd GhcPs))] -> AnnList -> PV (LocatedA (HsCmd GhcPs)) #

mkHsParPV :: SrcSpan -> LHsToken "(" GhcPs -> LocatedA (HsCmd GhcPs) -> LHsToken ")" GhcPs -> PV (LocatedA (HsCmd GhcPs)) #

mkHsVarPV :: LocatedN RdrName -> PV (LocatedA (HsCmd GhcPs)) #

mkHsLitPV :: Located (HsLit GhcPs) -> PV (Located (HsCmd GhcPs)) #

mkHsOverLitPV :: LocatedAn a (HsOverLit GhcPs) -> PV (LocatedAn a (HsCmd GhcPs)) #

mkHsWildCardPV :: SrcSpan -> PV (Located (HsCmd GhcPs)) #

mkHsTySigPV :: SrcSpanAnnA -> LocatedA (HsCmd GhcPs) -> LHsType GhcPs -> [AddEpAnn] -> PV (LocatedA (HsCmd GhcPs)) #

mkHsExplicitListPV :: SrcSpan -> [LocatedA (HsCmd GhcPs)] -> AnnList -> PV (LocatedA (HsCmd GhcPs)) #

mkHsSplicePV :: Located (HsUntypedSplice GhcPs) -> PV (Located (HsCmd GhcPs)) #

mkHsRecordPV :: Bool -> SrcSpan -> SrcSpan -> LocatedA (HsCmd GhcPs) -> ([Fbind (HsCmd GhcPs)], Maybe SrcSpan) -> [AddEpAnn] -> PV (LocatedA (HsCmd GhcPs)) #

mkHsNegAppPV :: SrcSpan -> LocatedA (HsCmd GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsCmd GhcPs)) #

mkHsSectionR_PV :: SrcSpan -> LocatedA (InfixOp (HsCmd GhcPs)) -> LocatedA (HsCmd GhcPs) -> PV (Located (HsCmd GhcPs)) #

mkHsViewPatPV :: SrcSpan -> LHsExpr GhcPs -> LocatedA (HsCmd GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsCmd GhcPs)) #

mkHsAsPatPV :: SrcSpan -> LocatedN RdrName -> LHsToken "@" GhcPs -> LocatedA (HsCmd GhcPs) -> PV (LocatedA (HsCmd GhcPs)) #

mkHsLazyPatPV :: SrcSpan -> LocatedA (HsCmd GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsCmd GhcPs)) #

mkHsBangPatPV :: SrcSpan -> LocatedA (HsCmd GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsCmd GhcPs)) #

mkSumOrTuplePV :: SrcSpanAnnA -> Boxity -> SumOrTuple (HsCmd GhcPs) -> [AddEpAnn] -> PV (LocatedA (HsCmd GhcPs)) #

rejectPragmaPV :: LocatedA (HsCmd GhcPs) -> PV () #

type Body (HsCmd GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type Body (HsCmd GhcPs) = HsCmd
type FunArg (HsCmd GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type FunArg (HsCmd GhcPs) = HsExpr GhcPs
type InfixOp (HsCmd GhcPs) |
Instance details Defined in GHC.Parser.PostProcess type InfixOp (HsCmd GhcPs) = HsExpr GhcPs
type Anno (HsCmd (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (HsCmd (GhcPass p)) = SrcSpanAnnA
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcSpanAnnA

type LHsCmd id = XRec id (HsCmd id) #

Located Haskell Command (for arrow syntax)

data LamCaseVariant #

Which kind of lambda case are we dealing with?

Constructors

LamCase | `case`
LamCases | `cases`

#### Instances

Instances details

Data LamCaseVariant |

Instance details

Defined in Language.Haskell.Syntax.Expr

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LamCaseVariant -> c LamCaseVariant #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LamCaseVariant #

toConstr :: LamCaseVariant -> Constr #

dataTypeOf :: LamCaseVariant -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LamCaseVariant) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LamCaseVariant) #

gmapT :: (forall b. Data b => b -> b) -> LamCaseVariant -> LamCaseVariant #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LamCaseVariant -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LamCaseVariant -> r #

gmapQ :: (forall d. Data d => d -> u) -> LamCaseVariant -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> LamCaseVariant -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> LamCaseVariant -> m LamCaseVariant #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LamCaseVariant -> m LamCaseVariant #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LamCaseVariant -> m LamCaseVariant #

Eq LamCaseVariant |
Instance details Defined in Language.Haskell.Syntax.Expr Methods (==) :: LamCaseVariant -> LamCaseVariant -> Bool # (/=) :: LamCaseVariant -> LamCaseVariant -> Bool #

data HsTupArg id #

- `AnnKeywordId` : `AnnComma`

Haskell Tuple Argument

Constructors

Present (XPresent id) (LHsExpr id) | The argument
Missing (XMissing id) | The argument is missing, but this is its type
XTupArg !(XXTupArg id) | Extension point; see Note [Trees That Grow] in Language.Haskell.Syntax.Extension

#### Instances

Instances details

HiePass p => ToHie (HsTupArg (GhcPass p)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: HsTupArg (GhcPass p) -> HieM [HieAST Type]

type LHsTupArg id = XRec id (HsTupArg id) #

Located Haskell Tuple Argument

`HsTupArg` is used for tuple sections `(,a,)` is represented by `ExplicitTuple [Missing ty1, Present a, Missing ty3]` Which in turn stands for `(x:ty1 y:ty2. (x,a,y))`

data HsPragE p #

A pragma, written as {-# ... #-}, that may appear within an expression.

Constructors

HsPragSCC (XSCC p) StringLiteral |

XHsPragE !(XXPragE p)

- `AnnKeywordId` : `AnnOpen`, `AnnOpen` `'{-# GENERATED'`, `AnnVal`,`AnnVal`, `AnnColon`,`AnnVal`, `AnnMinus`, `AnnVal`,`AnnColon`, `AnnVal`, `AnnClose` `'#-}'`

data DotFieldOcc p #

Constructors

DotFieldOcc |

Fields

- dfoExt :: XCDotFieldOcc p
- dfoLabel :: XRec p FieldLabelString

XDotFieldOcc !(XXDotFieldOcc p) |

#### Instances

Instances details

type Anno (DotFieldOcc (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (DotFieldOcc (GhcPass p)) = SrcAnn NoEpAnns

data LHsRecUpdFields p where #

Haskell Record Update Fields.

Constructors

RegularRecUpdFields | A regular (non-overloaded) record update.

Fields

- :: forall p. { xRecUpdFields :: XLHsRecUpdLabels p
- , recUpdFields :: [LHsRecUpdField p p]
- } -> LHsRecUpdFields p

OverloadedRecUpdFields | An overloaded record update.

Fields

- :: forall p. { xOLRecUpdFields :: XLHsOLRecUpdLabels p
- , olRecUpdFields :: [LHsRecUpdProj p]
- } -> LHsRecUpdFields p

type LHsRecUpdProj p = XRec p (RecUpdProj p) #

type RecUpdProj p = RecProj p (LHsExpr p) #

type LHsRecProj p arg = XRec p (RecProj p arg) #

type RecProj p arg = HsFieldBind (LFieldLabelStrings p) arg #

newtype FieldLabelStrings p #

Constructors

FieldLabelStrings [XRec p (DotFieldOcc p)] |

#### Instances

Instances details

type Anno (FieldLabelStrings (GhcPass p)) |
Instance details Defined in GHC.Hs.Expr type Anno (FieldLabelStrings (GhcPass p)) = SrcAnn NoEpAnns

type LFieldLabelStrings p = XRec p (FieldLabelStrings p) #

RecordDotSyntax field updates

isInfixMatch :: Match id body -> Bool #

isPatSynCtxt :: HsMatchContext p -> Bool #

qualifiedDoModuleName_maybe :: HsStmtContext p -> Maybe ModuleName #

isComprehensionContext :: HsStmtContext id -> Bool #

isDoComprehensionContext :: HsDoFlavour -> Bool #

isMonadStmtContext :: HsStmtContext id -> Bool #

Is this a monadic context?

isMonadDoStmtContext :: HsDoFlavour -> Bool #

isMonadCompContext :: HsStmtContext id -> Bool #

isMonadDoCompContext :: HsDoFlavour -> Bool #

data HsModule p #

Haskell Module

All we actually declare here is the top-level structure for a module.

Constructors

HsModule

`AnnKeywordId`s

- `AnnModule`,`AnnWhere`
- `AnnOpen`,`AnnSemi`, `AnnClose` for explicit braces and semi around hsmodImports,hsmodDecls if this style is used.

Fields

- hsmodExt :: XCModule p

  HsModule extension point

- hsmodName :: Maybe (XRec p ModuleName)

  `Nothing`: "module X where" is omitted (in which case the next field is Nothing too)

- hsmodExports :: Maybe (XRec p [LIE p])

  Export list

  - `Nothing`: export list omitted, so export everything
  - `Just []`: export nothing
  - `Just [...]`: as you would expect...
  - `AnnKeywordId`s : `AnnOpen` ,`AnnClose`
- hsmodImports :: [LImportDecl p]
- hsmodDecls :: [LHsDecl p]

  Type, class, value, and interface signature decls

XModule !(XXModule p) |

#### Instances

Instances details

NFData (HsModule a) # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: HsModule a -> () #
HasHaddock (Located (HsModule GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located (HsModule GhcPs) -> HdkA (Located (HsModule GhcPs))

module GHC.Rename.Names

module GHC.Rename.Splice

module GHC.Tc.Instance.Family

module GHC.Tc.Module

module GHC.Tc.Types

data Role #

See Note [Roles] in GHC.Core.Coercion

Order of constructors matters: the Ord instance coincides with the *super*typing relation on roles.

Constructors

Nominal |
Representational |
Phantom |

#### Instances

Instances details

Data Role |

Instance details

Defined in Language.Haskell.Syntax.Basic

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Role -> c Role #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Role #

toConstr :: Role -> Constr #

dataTypeOf :: Role -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Role) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Role) #

gmapT :: (forall b. Data b => b -> b) -> Role -> Role #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r #

gmapQ :: (forall d. Data d => d -> u) -> Role -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Role -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Role -> m Role #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role #

Eq Role |
Instance details Defined in Language.Haskell.Syntax.Basic Methods (==) :: Role -> Role -> Bool # (/=) :: Role -> Role -> Bool #
Ord Role |
Instance details Defined in Language.Haskell.Syntax.Basic Methods compare :: Role -> Role -> Ordering # (<) :: Role -> Role -> Bool # (<=) :: Role -> Role -> Bool # (>) :: Role -> Role -> Bool # (>=) :: Role -> Role -> Bool # max :: Role -> Role -> Role # min :: Role -> Role -> Role #
type Anno (Maybe Role) |
Instance details Defined in GHC.Hs.Decls type Anno (Maybe Role) = SrcAnn NoEpAnns
type Anno (Maybe Role) |
Instance details Defined in GHC.Hs.Decls type Anno (Maybe Role) = SrcAnn NoEpAnns

data LeftOrRight #

Constructors

CLeft |
CRight |

#### Instances

Instances details

Data LeftOrRight |

Instance details

Defined in GHC.Types.Basic

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LeftOrRight -> c LeftOrRight #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LeftOrRight #

toConstr :: LeftOrRight -> Constr #

dataTypeOf :: LeftOrRight -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LeftOrRight) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LeftOrRight) #

gmapT :: (forall b. Data b => b -> b) -> LeftOrRight -> LeftOrRight #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LeftOrRight -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LeftOrRight -> r #

gmapQ :: (forall d. Data d => d -> u) -> LeftOrRight -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> LeftOrRight -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> LeftOrRight -> m LeftOrRight #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LeftOrRight -> m LeftOrRight #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LeftOrRight -> m LeftOrRight #

Binary LeftOrRight |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> LeftOrRight -> IO () # put :: BinHandle -> LeftOrRight -> IO (Bin LeftOrRight) # get :: BinHandle -> IO LeftOrRight #
Outputable LeftOrRight |
Instance details Defined in GHC.Types.Basic Methods ppr :: LeftOrRight -> SDoc #
Eq LeftOrRight |
Instance details Defined in GHC.Types.Basic Methods (==) :: LeftOrRight -> LeftOrRight -> Bool # (/=) :: LeftOrRight -> LeftOrRight -> Bool #

pickLR :: LeftOrRight -> (a, a) -> a #

data CoercionHole #

A coercion to be filled in by the type-checker. See Note [Coercion holes]

#### Instances

Instances details

Data CoercionHole |

Instance details

Defined in GHC.Core.TyCo.Rep

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CoercionHole -> c CoercionHole #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CoercionHole #

toConstr :: CoercionHole -> Constr #

dataTypeOf :: CoercionHole -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CoercionHole) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CoercionHole) #

gmapT :: (forall b. Data b => b -> b) -> CoercionHole -> CoercionHole #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CoercionHole -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CoercionHole -> r #

gmapQ :: (forall d. Data d => d -> u) -> CoercionHole -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CoercionHole -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CoercionHole -> m CoercionHole #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CoercionHole -> m CoercionHole #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CoercionHole -> m CoercionHole #

Uniquable CoercionHole |
Instance details Defined in GHC.Core.TyCo.Rep Methods getUnique :: CoercionHole -> Unique #
Outputable CoercionHole |
Instance details Defined in GHC.Core.TyCo.Rep Methods ppr :: CoercionHole -> SDoc #

data QuoteWrapper #

Constructors

QuoteWrapper EvVar Type |

#### Instances

Instances details

Data QuoteWrapper |

Instance details

Defined in GHC.Tc.Types.Evidence

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> QuoteWrapper -> c QuoteWrapper #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c QuoteWrapper #

toConstr :: QuoteWrapper -> Constr #

dataTypeOf :: QuoteWrapper -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c QuoteWrapper) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c QuoteWrapper) #

gmapT :: (forall b. Data b => b -> b) -> QuoteWrapper -> QuoteWrapper #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> QuoteWrapper -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> QuoteWrapper -> r #

gmapQ :: (forall d. Data d => d -> u) -> QuoteWrapper -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> QuoteWrapper -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> QuoteWrapper -> m QuoteWrapper #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> QuoteWrapper -> m QuoteWrapper #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> QuoteWrapper -> m QuoteWrapper #

data HoleExprRef #

Where to store evidence for expression holes See Note [Holes] in GHC.Tc.Types.Constraint

Constructors

HER |

Fields

- (IORef EvTerm)

  where to write the erroring expression

- TcType

  expected type of that expression

- Unique

  for debug output only

#### Instances

Instances details

Data HoleExprRef |

Instance details

Defined in GHC.Tc.Types.Evidence

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HoleExprRef -> c HoleExprRef #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HoleExprRef #

toConstr :: HoleExprRef -> Constr #

dataTypeOf :: HoleExprRef -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HoleExprRef) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HoleExprRef) #

gmapT :: (forall b. Data b => b -> b) -> HoleExprRef -> HoleExprRef #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HoleExprRef -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HoleExprRef -> r #

gmapQ :: (forall d. Data d => d -> u) -> HoleExprRef -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HoleExprRef -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HoleExprRef -> m HoleExprRef #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HoleExprRef -> m HoleExprRef #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HoleExprRef -> m HoleExprRef #

Outputable HoleExprRef |
Instance details Defined in GHC.Tc.Types.Evidence Methods ppr :: HoleExprRef -> SDoc #

data EvCallStack #

Evidence for `CallStack` implicit parameters.

Constructors

EvCsEmpty |
EvCsPushCall FastString RealSrcSpan EvExpr | `EvCsPushCall origin loc stk` represents a call from `origin`, occurring at `loc`, in a calling context `stk`.

#### Instances

Instances details

Data EvCallStack |

Instance details

Defined in GHC.Tc.Types.Evidence

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> EvCallStack -> c EvCallStack #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c EvCallStack #

toConstr :: EvCallStack -> Constr #

dataTypeOf :: EvCallStack -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c EvCallStack) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c EvCallStack) #

gmapT :: (forall b. Data b => b -> b) -> EvCallStack -> EvCallStack #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> EvCallStack -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> EvCallStack -> r #

gmapQ :: (forall d. Data d => d -> u) -> EvCallStack -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> EvCallStack -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> EvCallStack -> m EvCallStack #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> EvCallStack -> m EvCallStack #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> EvCallStack -> m EvCallStack #

Outputable EvCallStack |
Instance details Defined in GHC.Tc.Types.Evidence Methods ppr :: EvCallStack -> SDoc #

data EvTypeable #

Instructions on how to make a `Typeable` dictionary. See Note [Typeable evidence terms]

Constructors

EvTypeableTyCon TyCon [EvTerm] | Dictionary for `Typeable T` where `T` is a type constructor with all of its kind variables saturated. The `[EvTerm]` is `Typeable` evidence for the applied kinds..
EvTypeableTyApp EvTerm EvTerm | Dictionary for `Typeable (s t)`, given a dictionaries for `s` and `t`.
EvTypeableTrFun EvTerm EvTerm EvTerm | Dictionary for `Typeable (s % w -> t)`, given a dictionaries for `w`, `s`, and `t`.
EvTypeableTyLit EvTerm | Dictionary for a type literal, e.g. `Typeable "foo"` or `Typeable 3` The `EvTerm` is evidence of, e.g., `KnownNat 3` (see #10348)

#### Instances

Instances details

Data EvTypeable |

Instance details

Defined in GHC.Tc.Types.Evidence

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> EvTypeable -> c EvTypeable #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c EvTypeable #

toConstr :: EvTypeable -> Constr #

dataTypeOf :: EvTypeable -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c EvTypeable) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c EvTypeable) #

gmapT :: (forall b. Data b => b -> b) -> EvTypeable -> EvTypeable #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> EvTypeable -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> EvTypeable -> r #

gmapQ :: (forall d. Data d => d -> u) -> EvTypeable -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> EvTypeable -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> EvTypeable -> m EvTypeable #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> EvTypeable -> m EvTypeable #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> EvTypeable -> m EvTypeable #

Outputable EvTypeable |
Instance details Defined in GHC.Tc.Types.Evidence Methods ppr :: EvTypeable -> SDoc #

data EvTerm #

Constructors

EvExpr EvExpr |
EvTypeable Type EvTypeable |
EvFun |

Fields

- et_tvs :: [TyVar]
- et_given :: [EvVar]
- et_binds :: TcEvBinds
- et_body :: EvVar

#### Instances

Instances details

Data EvTerm |

Instance details

Defined in GHC.Tc.Types.Evidence

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> EvTerm -> c EvTerm #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c EvTerm #

toConstr :: EvTerm -> Constr #

dataTypeOf :: EvTerm -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c EvTerm) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c EvTerm) #

gmapT :: (forall b. Data b => b -> b) -> EvTerm -> EvTerm #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> EvTerm -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> EvTerm -> r #

gmapQ :: (forall d. Data d => d -> u) -> EvTerm -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> EvTerm -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> EvTerm -> m EvTerm #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> EvTerm -> m EvTerm #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> EvTerm -> m EvTerm #

Outputable EvTerm |
Instance details Defined in GHC.Tc.Types.Evidence Methods ppr :: EvTerm -> SDoc #

type EvExpr = CoreExpr #

data EvBind #

Constructors

EvBind |

Fields

- eb_lhs :: EvVar
- eb_rhs :: EvTerm
- eb_info :: EvBindInfo

#### Instances

Instances details

Outputable EvBind |
Instance details Defined in GHC.Tc.Types.Evidence Methods ppr :: EvBind -> SDoc #

data EvBindInfo #

Constructors

EvBindGiven |
EvBindWanted |

Fields

- ebi_canonical :: Canonical

newtype EvBindMap #

Constructors

EvBindMap |

Fields

- ev_bind_varenv :: DVarEnv EvBind

#### Instances

Instances details

Outputable EvBindMap |
Instance details Defined in GHC.Tc.Types.Evidence Methods ppr :: EvBindMap -> SDoc #

data EvBindsVar #

Constructors

EvBindsVar |

Fields

- ebv_uniq :: Unique
- ebv_binds :: IORef EvBindMap
- ebv_tcvs :: IORef CoVarSet

CoEvBindsVar |

Fields

- ebv_uniq :: Unique
- ebv_tcvs :: IORef CoVarSet

#### Instances

Instances details

Uniquable EvBindsVar |
Instance details Defined in GHC.Tc.Types.Evidence Methods getUnique :: EvBindsVar -> Unique #
Outputable EvBindsVar |
Instance details Defined in GHC.Tc.Types.Evidence Methods ppr :: EvBindsVar -> SDoc #

data TcEvBinds #

Constructors

TcEvBinds EvBindsVar |
EvBinds (Bag EvBind) |

#### Instances

Instances details

Data TcEvBinds |

Instance details

Defined in GHC.Tc.Types.Evidence

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TcEvBinds -> c TcEvBinds #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TcEvBinds #

toConstr :: TcEvBinds -> Constr #

dataTypeOf :: TcEvBinds -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TcEvBinds) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TcEvBinds) #

gmapT :: (forall b. Data b => b -> b) -> TcEvBinds -> TcEvBinds #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TcEvBinds -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TcEvBinds -> r #

gmapQ :: (forall d. Data d => d -> u) -> TcEvBinds -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TcEvBinds -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TcEvBinds -> m TcEvBinds #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TcEvBinds -> m TcEvBinds #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TcEvBinds -> m TcEvBinds #

Outputable TcEvBinds |
Instance details Defined in GHC.Tc.Types.Evidence Methods ppr :: TcEvBinds -> SDoc #
ToHie (EvBindContext (LocatedA TcEvBinds)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: EvBindContext (LocatedA TcEvBinds) -> HieM [HieAST Type]

data HsWrapper #

Constructors

WpHole |
WpCompose HsWrapper HsWrapper |
WpFun HsWrapper HsWrapper (Scaled TcTypeFRR) |
WpCast TcCoercionR |
WpEvLam EvVar |
WpEvApp EvTerm |
WpTyLam TyVar |
WpTyApp KindOrType |
WpLet TcEvBinds |
WpMultCoercion Coercion |

#### Instances

Instances details

Data HsWrapper |

Instance details

Defined in GHC.Tc.Types.Evidence

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsWrapper -> c HsWrapper #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c HsWrapper #

toConstr :: HsWrapper -> Constr #

dataTypeOf :: HsWrapper -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c HsWrapper) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HsWrapper) #

gmapT :: (forall b. Data b => b -> b) -> HsWrapper -> HsWrapper #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsWrapper -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsWrapper -> r #

gmapQ :: (forall d. Data d => d -> u) -> HsWrapper -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsWrapper -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsWrapper -> m HsWrapper #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsWrapper -> m HsWrapper #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsWrapper -> m HsWrapper #

Monoid HsWrapper |
Instance details Defined in GHC.Tc.Types.Evidence Methods mempty :: HsWrapper # mappend :: HsWrapper -> HsWrapper -> HsWrapper # mconcat :: [HsWrapper] -> HsWrapper #

Semigroup HsWrapper

The Semigroup instance is a bit fishy, since `WpCompose`, as a data constructor, is "syntactic" and not associative. Concretely, if `a`, `b`, and `c` aren't `WpHole`:

    (a <> b) <> c ?= a <> (b <> c)

## >

    (a `WpCompose` b) `WpCompose` c /= @ a `WpCompose` (b `WpCompose` c)

However these two associations are are "semantically equal" in the sense that they produce equal functions when passed to `GHC.HsToCore.Binds.dsHsWrapper`.

Instance details Defined in GHC.Tc.Types.Evidence Methods (<>) :: HsWrapper -> HsWrapper -> HsWrapper # sconcat :: NonEmpty HsWrapper -> HsWrapper # stimes :: Integral b => b -> HsWrapper -> HsWrapper #
Outputable HsWrapper |
Instance details Defined in GHC.Tc.Types.Evidence Methods ppr :: HsWrapper -> SDoc #
ToHie (LocatedA HsWrapper) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA HsWrapper -> HieM [HieAST Type]

type TcMCoercionR = MCoercionR #

type TcMCoercionN = MCoercionN #

type TcMCoercion = MCoercion #

type TcCoercionP = CoercionP #

type TcCoercionR = CoercionR #

type TcCoercionN = CoercionN #

type TcCoercion = Coercion #

maybeSymCo :: SwapFlag -> TcCoercion -> TcCoercion #

If a `SwapFlag` is `IsSwapped`, flip the orientation of a coercion

mkWpFun #

Arguments

:: HsWrapper |
-> HsWrapper |
-> Scaled TcTypeFRR | the "from" type of the first wrapper MUST have a fixed RuntimeRep
-> TcType | Either "from" type or "to" type of the second wrapper (used only when the second wrapper is the identity)
-> HsWrapper |

Smart constructor to create a `WpFun` `HsWrapper`.

PRECONDITION: the "from" type of the first wrapper must have a syntactically fixed RuntimeRep (see Note [Fixed RuntimeRep] in GHC.Tc.Utils.Concrete).

mkWpEta :: [Id] -> HsWrapper -> HsWrapper #

mkWpCastR :: TcCoercionR -> HsWrapper #

mkWpCastN :: TcCoercionN -> HsWrapper #

mkWpTyApps :: [Type] -> HsWrapper #

mkWpEvApps :: [EvTerm] -> HsWrapper #

mkWpEvVarApps :: [EvVar] -> HsWrapper #

mkWpTyLams :: [TyVar] -> HsWrapper #

mkWpEvLams :: [Var] -> HsWrapper #

mkWpLet :: TcEvBinds -> HsWrapper #

idHsWrapper :: HsWrapper #

isIdHsWrapper :: HsWrapper -> Bool #

hsWrapDictBinders :: HsWrapper -> Bag DictId #

Identifies the lambda-bound dictionaries of an `HsWrapper`. This is used (only) to allow the pattern-match overlap checker to know what Given dictionaries are in scope.

We specifically do not collect dictionaries bound in a `WpLet`. These are either superclasses of lambda-bound ones, or (extremely numerous) results of binding Wanted dictionaries. We definitely don't want all those cluttering up the Given dictionaries for pattern-match overlap checking!

collectHsWrapBinders :: HsWrapper -> ([Var], HsWrapper) #

isCoEvBindsVar :: EvBindsVar -> Bool #

emptyEvBindMap :: EvBindMap #

extendEvBinds :: EvBindMap -> EvBind -> EvBindMap #

isEmptyEvBindMap :: EvBindMap -> Bool #

lookupEvBind :: EvBindMap -> EvVar -> Maybe EvBind #

evBindMapBinds :: EvBindMap -> Bag EvBind #

foldEvBindMap :: (EvBind -> a -> a) -> a -> EvBindMap -> a #

nonDetStrictFoldEvBindMap :: (EvBind -> a -> a) -> a -> EvBindMap -> a #

filterEvBindMap :: (EvBind -> Bool) -> EvBindMap -> EvBindMap #

evBindMapToVarSet :: EvBindMap -> VarSet #

varSetMinusEvBindMap :: VarSet -> EvBindMap -> VarSet #

evBindVar :: EvBind -> EvVar #

mkWantedEvBind :: EvVar -> Canonical -> EvTerm -> EvBind #

mkGivenEvBind :: EvVar -> EvTerm -> EvBind #

evId :: EvId -> EvExpr #

Any sort of evidence Id, including coercions

evCoercion :: TcCoercion -> EvTerm #

evCast :: EvExpr -> TcCoercion -> EvTerm #

d |> co

evDFunApp :: DFunId -> [Type] -> [EvExpr] -> EvTerm #

evDataConApp :: DataCon -> [Type] -> [EvExpr] -> EvTerm #

evSelector :: Id -> [Type] -> [EvExpr] -> EvExpr #

evTypeable :: Type -> EvTypeable -> EvTerm #

mkEvCast :: EvExpr -> TcCoercion -> EvTerm #

mkEvScSelectors :: Class -> [TcType] -> [(TcPredType, EvExpr)] #

emptyTcEvBinds :: TcEvBinds #

isEmptyTcEvBinds :: TcEvBinds -> Bool #

evTermCoercion_maybe :: EvTerm -> Maybe TcCoercion #

evTermCoercion :: EvTerm -> TcCoercion #

findNeededEvVars :: EvBindMap -> VarSet -> VarSet #

evVarsOfTerm :: EvTerm -> VarSet #

pprHsWrapper :: HsWrapper -> (Bool -> SDoc) -> SDoc #

unwrapIP :: Type -> CoercionR #

Create a `Coercion` that unwraps an implicit-parameter dictionary to expose the underlying value. We expect the `Type` to have the form `IP sym ty`, and return a `Coercion` `co :: IP sym ty ~ ty`

wrapIP :: Type -> CoercionR #

Create a `Coercion` that wraps a value in an implicit-parameter dictionary. See `unwrapIP`.

quoteWrapperTyVarTy :: QuoteWrapper -> Type #

applyQuoteWrapper :: QuoteWrapper -> HsWrapper #

Convert the QuoteWrapper into a normal HsWrapper which can be used to apply its contents.

module GHC.Tc.Utils.Env

newName :: OccName -> TcM Name #

setEnv :: env' -> IOEnv env' a -> IOEnv env a #

Perform a computation with a different environment

getEnv :: IOEnv env env #

foldrM :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m b #

Right-to-left monadic fold over the elements of a structure.

Given a structure `t` with elements `(a, b, c, ..., x, y)`, the result of a fold with an operator function `f` is equivalent to:

    foldrM f z t = do
        yy <- f y z
        xx <- f x yy
        ...
        bb <- f b cc
        aa <- f a bb
        return aa -- Just @return z@ when the structure is empty

For a Monad `m`, given two functions `f1 :: a -> m b` and `f2 :: b -> m c`, their Kleisli composition `(f1 >=> f2) :: a -> m c` is defined by:

    (f1 >=> f2) a = f1 a >>= f2

Another way of thinking about `foldrM` is that it amounts to an application to `z` of a Kleisli composition:

    foldrM f z t = f y >=> f x >=> ... >=> f b >=> f a $ z

The monadic effects of `foldrM` are sequenced from right to left, and e.g. folds of infinite lists will diverge.

If at some step the bind operator `(`>>=`)` short-circuits (as with, e.g., `mzero` in a `MonadPlus`), the evaluated effects will be from a tail of the element sequence. If you want to evaluate the monadic effects in left-to-right order, or perhaps be able to short-circuit after an initial sequence of elements, you'll need to use `foldlM` instead.

If the monadic effects don't short-circuit, the outermost application of `f` is to the leftmost element `a`, so that, ignoring effects, the result looks like a right fold:

    a `f` (b `f` (c `f` (... (x `f` (y `f` z))))).

#### Examples

Expand

Basic usage:

    >>> let f i acc = do { print i ; return $ i : acc }
    >>> foldrM f [] [0..3]
    3
    2
    1
    0
    [0,1,2,3]

foldlM :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b #

Left-to-right monadic fold over the elements of a structure.

Given a structure `t` with elements `(a, b, ..., w, x, y)`, the result of a fold with an operator function `f` is equivalent to:

    foldlM f z t = do
        aa <- f z a
        bb <- f aa b
        ...
        xx <- f ww x
        yy <- f xx y
        return yy -- Just @return z@ when the structure is empty

For a Monad `m`, given two functions `f1 :: a -> m b` and `f2 :: b -> m c`, their Kleisli composition `(f1 >=> f2) :: a -> m c` is defined by:

    (f1 >=> f2) a = f1 a >>= f2

Another way of thinking about `foldlM` is that it amounts to an application to `z` of a Kleisli composition:

    foldlM f z t =
        flip f a >=> flip f b >=> ... >=> flip f x >=> flip f y $ z

The monadic effects of `foldlM` are sequenced from left to right.

If at some step the bind operator `(`>>=`)` short-circuits (as with, e.g., `mzero` in a `MonadPlus`), the evaluated effects will be from an initial segment of the element sequence. If you want to evaluate the monadic effects in right-to-left order, or perhaps be able to short-circuit after processing a tail of the sequence of elements, you'll need to use `foldrM` instead.

If the monadic effects don't short-circuit, the outermost application of `f` is to the rightmost element `y`, so that, ignoring effects, the result looks like a left fold:

    ((((z `f` a) `f` b) ... `f` w) `f` x) `f` y

#### Examples

Expand

Basic usage:

    >>> let f a e = do { print e ; return $ e : a }
    >>> foldlM f [] [0..3]
    0
    1
    2
    3
    [3,2,1,0]

mapAndUnzipM :: Applicative m => (a -> m (b, c)) -> [a] -> m ([b], [c]) #

The `mapAndUnzipM` function maps its first argument over a list, returning the result as a pair of lists. This function is mainly used with complicated data structures or a state monad.

newUnique :: TcRnIf gbl lcl Unique #

data Env gbl lcl #

Constructors

Env |

Fields

- env_top :: !HscEnv
- env_um :: !Char
- env_gbl :: gbl
- env_lcl :: lcl

#### Instances

Instances details

ContainsDynFlags (Env gbl lcl) |
Instance details Defined in GHC.Tc.Types Methods extractDynFlags :: Env gbl lcl -> DynFlags #
ContainsHooks (Env gbl lcl) |
Instance details Defined in GHC.Tc.Types Methods extractHooks :: Env gbl lcl -> Hooks #
ContainsModule gbl => ContainsModule (Env gbl lcl) |
Instance details Defined in GHC.Tc.Types Methods extractModule :: Env gbl lcl -> Module #
ContainsLogger (Env gbl lcl) |
Instance details Defined in GHC.Tc.Types Methods extractLogger :: Env gbl lcl -> Logger #

newMutVar :: a -> IOEnv env (IORef a) #

readMutVar :: IORef a -> IOEnv env a #

writeMutVar :: IORef a -> a -> IOEnv env () #

orM :: Monad m => m Bool -> m Bool -> m Bool #

Monadic version of or

partitionM :: Monad m => (a -> m Bool) -> [a] -> m ([a], [a]) #

Monadic version of `partition`

whenM :: Monad m => m Bool -> m () -> m () #

Monadic version of `when`, taking the condition in the monad

unlessM :: Monad m => m Bool -> m () -> m () #

Monadic version of `unless`, taking the condition in the monad

data TcGblEnv #

`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

TcGblEnv |

Fields

- tcg_mod :: Module

  Module being compiled

- tcg_semantic_mod :: Module

  If a signature, the backing module See also Note [Identity versus semantic module]

- tcg_src :: HscSource

  What kind of module (regular Haskell, hs-boot, hsig)

- tcg_rdr_env :: GlobalRdrEnv

  Top level envt; used during renaming

- tcg_default :: Maybe [Type]

  Types used for defaulting. `Nothing` => no `default` decl

- tcg_fix_env :: FixityEnv

  Just for things in this module

- tcg_type_env :: TypeEnv

  Global 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 :: !InstEnv

  Instance 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 :: !FamInstEnv

  Ditto for family instances NB. BangPattern is to fix a leak, see #15111

- tcg_ann_env :: AnnEnv

  And for annotations

- tcg_exports :: [AvailInfo]

  What is exported

- tcg_imports :: ImportAvails

  Information 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:

  1. All of the modules you directly imported (tcRnImports)
  2. The orphans (only!) of all imported modules in a GHCi session (runTcInteractive)
  3. The module that instantiated a signature
  4. 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 :: DefUses
- tcg_used_gres :: TcRef [GlobalRdrElt]

  INVARIANT: all these GREs were imported; that is, they all have a non-empty gre_imp field.

- tcg_keep :: TcRef NameSet
- tcg_th_used :: TcRef Bool

  `True` <=> 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 Bool

  `True` <=> 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 OccSet

  Allows us to choose unique DFun names.

- 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 NameSet

  Exact 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 THDocs

  Docs added in Template Haskell via `putDoc`.

- tcg_ev_binds :: Bag EvBind
- tcg_tr_module :: Maybe Id
- tcg_binds :: LHsBinds GhcTc
- tcg_sigs :: NameSet
- tcg_imp_specs :: [LTcSpecPrag]
- tcg_warns :: Warnings GhcRn
- tcg_anns :: [Annotation]
- tcg_tcs :: [TyCon]
- tcg_ksigs :: NameSet
- tcg_insts :: [ClsInst]
- tcg_fam_insts :: [FamInst]
- tcg_rules :: [LRuleDecl GhcTc]
- tcg_fords :: [LForeignDecl GhcTc]
- tcg_patsyns :: [PatSyn]
- tcg_doc_hdr :: Maybe (LHsDoc GhcRn)

  Maybe Haddock header docs

- tcg_hpc :: !AnyHpcUsage

  `True` if any part of the prog uses hpc instrumentation. NB. BangPattern is to fix a leak, see #15111

- tcg_self_boot :: SelfBootInfo

  Whether this module has a corresponding hi-boot file

- tcg_main :: Maybe Name

  The Name of the main function, if this module is the main module.

- tcg_safe_infer :: TcRef Bool

  Has 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 `TyCon`s.

- 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 :: RealSrcSpan

  The RealSrcSpan this module came from

- tcg_static_wc :: TcRef WantedConstraints

  Wanted constraints of static forms. See Note [Constraints in static forms].

- tcg_complete_matches :: !CompleteMatches

  Tracking indices for cost centre annotations

- tcg_cc_st :: TcRef CostCentreState
- tcg_next_wrapper_num :: TcRef (ModuleEnv Int)

  See Note [Generating fresh names for FFI wrappers]

#### Instances

Instances details

ContainsModule TcGblEnv |
Instance details Defined in GHC.Tc.Types Methods extractModule :: TcGblEnv -> Module #

data ForeignSrcLang #

Foreign formats supported by GHC via TH

Constructors

LangC | C
LangCxx | C++
LangObjc | Objective C
LangObjcxx | Objective C++
LangAsm | Assembly language (.s)
LangJs | JavaScript
RawObject | Object (.o)

#### Instances

Instances details

Generic ForeignSrcLang |

Instance details

Defined in GHC.ForeignSrcLang.Type

Associated Types

type Rep ForeignSrcLang |

Instance details

Defined in GHC.ForeignSrcLang.Type

type Rep ForeignSrcLang = D1 ('MetaData "ForeignSrcLang" "GHC.ForeignSrcLang.Type" "ghc-boot-th-9.8.2-inplace" 'False) ((C1 ('MetaCons "LangC" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LangCxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangObjc" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LangObjcxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangAsm" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LangJs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RawObject" 'PrefixI 'False) (U1 :: Type -> Type))))

Methods

from :: ForeignSrcLang -> Rep ForeignSrcLang x #

to :: Rep ForeignSrcLang x -> ForeignSrcLang #

Show ForeignSrcLang |
Instance details Defined in GHC.ForeignSrcLang.Type Methods showsPrec :: Int -> ForeignSrcLang -> ShowS # show :: ForeignSrcLang -> String # showList :: [ForeignSrcLang] -> ShowS #
Eq ForeignSrcLang |
Instance details Defined in GHC.ForeignSrcLang.Type Methods (==) :: ForeignSrcLang -> ForeignSrcLang -> Bool # (/=) :: ForeignSrcLang -> ForeignSrcLang -> Bool #
type Rep ForeignSrcLang |

Instance details

Defined in GHC.ForeignSrcLang.Type

type Rep ForeignSrcLang = D1 ('MetaData "ForeignSrcLang" "GHC.ForeignSrcLang.Type" "ghc-boot-th-9.8.2-inplace" 'False) ((C1 ('MetaCons "LangC" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LangCxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangObjc" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LangObjcxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangAsm" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LangJs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RawObject" 'PrefixI 'False) (U1 :: Type -> Type))))

data TcLclEnv #

Constructors

TcLclEnv |

Fields

- tcl_lcl_ctxt :: !TcLclCtxt
- tcl_usage :: TcRef UsageEnv
- tcl_lie :: TcRef WantedConstraints
- tcl_errs :: TcRef (Messages TcRnMessage)

zipWith3M :: Monad m => (a -> b -> c -> m d) -> [a] -> [b] -> [c] -> m [d] #

zipWith3M_ :: Monad m => (a -> b -> c -> m d) -> [a] -> [b] -> [c] -> m () #

zipWith4M :: Monad m => (a -> b -> c -> d -> m e) -> [a] -> [b] -> [c] -> [d] -> m [e] #

zipWithAndUnzipM :: Monad m => (a -> b -> m (c, d)) -> [a] -> [b] -> m ([c], [d]) #

zipWith3MNE :: Monad m => (a -> b -> c -> m d) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> m (NonEmpty d) #

`zipWith3M` for `NonEmpty` lists.

mapAndUnzip3M :: Monad m => (a -> m (b, c, d)) -> [a] -> m ([b], [c], [d]) #

mapAndUnzipM for triples

mapAndUnzip4M :: Monad m => (a -> m (b, c, d, e)) -> [a] -> m ([b], [c], [d], [e]) #

mapAndUnzip5M :: Monad m => (a -> m (b, c, d, e, f)) -> [a] -> m ([b], [c], [d], [e], [f]) #

mapAccumLM #

Arguments

:: (Monad m, Traversable t) |
=> (acc -> x -> m (acc, y)) | combining function
-> acc | initial state
-> t x | inputs
-> m (acc, t y) | final state, outputs

Monadic version of mapAccumL

mapSndM :: (Applicative m, Traversable f) => (b -> m c) -> f (a, b) -> m (f (a, c)) #

Monadic version of mapSnd

foldlM_ :: (Monad m, Foldable t) => (a -> b -> m a) -> a -> t b -> m () #

Monadic version of foldl that discards its result

filterOutM :: Applicative m => (a -> m Bool) -> [a] -> m [a] #

Like `filterM`, only it reverses the sense of the test.

type TcRef a = IORef a #

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.

newTcRef :: MonadIO m => a -> m (TcRef a) #

readTcRef :: MonadIO m => TcRef a -> m a #

writeTcRef :: MonadIO m => TcRef a -> a -> m () #

updTcRef :: MonadIO m => TcRef a -> (a -> a) -> m () #

updTcRefM :: MonadIO m => TcRef a -> (a -> m a) -> m () #

data PromotionErr #

Constructors

TyConPE |
ClassPE |
FamDataConPE |
ConstrainedDataConPE ThetaType |
PatSynPE |
RecDataConPE |
TermVariablePE |
NoDataKindsDC |
TypeVariablePE |

#### Instances

Instances details

Generic PromotionErr |

Instance details

Defined in GHC.Tc.Errors.Types.PromotionErr

Associated Types

type Rep PromotionErr |

Instance details

Defined in GHC.Tc.Errors.Types.PromotionErr

type Rep PromotionErr = D1 ('MetaData "PromotionErr" "GHC.Tc.Errors.Types.PromotionErr" "ghc-9.8.2-inplace" 'False) (((C1 ('MetaCons "TyConPE" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ClassPE" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "FamDataConPE" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstrainedDataConPE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ThetaType)))) :+: ((C1 ('MetaCons "PatSynPE" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RecDataConPE" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TermVariablePE" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "NoDataKindsDC" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeVariablePE" 'PrefixI 'False) (U1 :: Type -> Type)))))

Methods

from :: PromotionErr -> Rep PromotionErr x #

to :: Rep PromotionErr x -> PromotionErr #

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

Instance details

Defined in GHC.Tc.Errors.Types.PromotionErr

type Rep PromotionErr = D1 ('MetaData "PromotionErr" "GHC.Tc.Errors.Types.PromotionErr" "ghc-9.8.2-inplace" 'False) (((C1 ('MetaCons "TyConPE" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ClassPE" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "FamDataConPE" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstrainedDataConPE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ThetaType)))) :+: ((C1 ('MetaCons "PatSynPE" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RecDataConPE" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TermVariablePE" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "NoDataKindsDC" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeVariablePE" 'PrefixI 'False) (U1 :: Type -> Type)))))

pprPECategory :: PromotionErr -> SDoc #

peCategory :: PromotionErr -> String #

data ImportAvails #

`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

ImportAvails |

Fields

- imp_mods :: ImportedMods

  Domain 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 ModuleNameWithIsBoot

  Home-package modules directly imported by the module being compiled.

- imp_dep_direct_pkgs :: Set UnitId

  Packages directly needed by the module being compiled

- imp_trust_own_pkg :: Bool

  Do 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 UnitId

  This 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 ModuleNameWithIsBoot

  Domain 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)

type ClosedTypeId = Bool #

type RhsNames = NameSet #

data IsGroupClosed #

IsGroupClosed describes a group of mutually-recursive bindings

Constructors

IsGroupClosed (NameEnv RhsNames) ClosedTypeId |

data IdBindingInfo #

IdBindingInfo describes how an Id is bound.

It is used for the following purposes: a) for static forms in `checkClosedInStaticForm` and b) to figure out when a nested binding can be generalised, in `decideGeneralisationPlan`.

Constructors

NotLetBound |
ClosedLet |
NonClosedLet RhsNames ClosedTypeId |

#### Instances

Instances details

Outputable IdBindingInfo |
Instance details Defined in GHC.Tc.Types.BasicTypes Methods ppr :: IdBindingInfo -> SDoc #

data TcTyThing #

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`.

Constructors

AGlobal TyThing |
ATcId |

Fields

- tct_id :: Id
- tct_info :: IdBindingInfo

ATyVar Name TcTyVar |
ATcTyCon TyCon |
APromotionErr PromotionErr |

#### Instances

Instances details

Outputable TcTyThing |
Instance details Defined in GHC.Tc.Types.BasicTypes Methods ppr :: TcTyThing -> SDoc #

data TcPatSynInfo #

Constructors

TPSI |

Fields

- patsig_name :: Name
- patsig_implicit_bndrs :: [InvisTVBinder]
- patsig_univ_bndrs :: [InvisTVBinder]
- patsig_req :: TcThetaType
- patsig_ex_bndrs :: [InvisTVBinder]
- patsig_prov :: TcThetaType
- patsig_body_ty :: TcSigmaType

#### Instances

Instances details

Outputable TcPatSynInfo |
Instance details Defined in GHC.Tc.Types.BasicTypes Methods ppr :: TcPatSynInfo -> SDoc #

data TcIdSigInst #

Constructors

TISI |

Fields

- sig_inst_sig :: TcIdSigInfo
- sig_inst_skols :: [(Name, InvisTVBinder)]
- sig_inst_theta :: TcThetaType
- sig_inst_tau :: TcSigmaType
- sig_inst_wcs :: [(Name, TcTyVar)]
- sig_inst_wcx :: Maybe TcType

#### Instances

Instances details

Outputable TcIdSigInst |
Instance details Defined in GHC.Tc.Types.BasicTypes Methods ppr :: TcIdSigInst -> SDoc #

data TcIdSigInfo #

Constructors

CompleteSig |

Fields

- sig_bndr :: TcId
- sig_ctxt :: UserTypeCtxt
- sig_loc :: SrcSpan

PartialSig |

Fields

- psig_name :: Name
- psig_hs_ty :: LHsSigWcType GhcRn
- sig_ctxt :: UserTypeCtxt
- sig_loc :: SrcSpan

#### Instances

Instances details

Outputable TcIdSigInfo |
Instance details Defined in GHC.Tc.Types.BasicTypes Methods ppr :: TcIdSigInfo -> SDoc #

data TcSigInfo #

Constructors

TcIdSig TcIdSigInfo |
TcPatSynSig TcPatSynInfo |

#### Instances

Instances details

Outputable TcSigInfo |
Instance details Defined in GHC.Tc.Types.BasicTypes Methods ppr :: TcSigInfo -> SDoc #

type TcSigFun = Name -> Maybe TcSigInfo #

data TcBinder #

Constructors

TcIdBndr TcId TopLevelFlag |
TcIdBndr_ExpType Name ExpType TopLevelFlag |
TcTvBndr Name TyVar |

#### Instances

Instances details

HasOccName TcBinder |
Instance details Defined in GHC.Tc.Types.BasicTypes Methods occName :: TcBinder -> OccName #
Outputable TcBinder |
Instance details Defined in GHC.Tc.Types.BasicTypes Methods ppr :: TcBinder -> SDoc #

type TcId = Id #

type TcBinderStack = [TcBinder] #

isPartialSig :: TcIdSigInst -> Bool #

hasCompleteSig :: TcSigFun -> Name -> Bool #

No signature or a partial signature

tcTyThingTyCon_maybe :: TcTyThing -> Maybe TyCon #

Matches on either a global `TyCon` or a `TcTyCon`.

pprTcTyThingCategory :: TcTyThing -> SDoc #

tcTyThingCategory :: TcTyThing -> String #

type ErrCtxt = (Bool, TidyEnv -> ZonkM (TidyEnv, SDoc)) #

Additional context to include in an error message, e.g. "In the type signature ...", "In the ambiguity check for ...", etc.

type ThLevel = Int #

data PendingStuff #

Constructors

RnPendingUntyped (TcRef [PendingRnSplice]) |
RnPendingTyped |
TcPending (TcRef [PendingTcSplice]) (TcRef WantedConstraints) QuoteWrapper |

data ThStage #

Constructors

Splice SpliceType |
RunSplice (TcRef [ForeignRef (Q ())]) |
Comp |
Brack ThStage PendingStuff |

#### Instances

Instances details

Outputable ThStage |
Instance details Defined in GHC.Tc.Types.TH Methods ppr :: ThStage -> SDoc #

data SpliceOrBracket #

Constructors

IsSplice |
IsBracket |

data SpliceType #

Constructors

Typed |
Untyped |

topStage :: ThStage #

topAnnStage :: ThStage #

topSpliceStage :: ThStage #

impLevel :: ThLevel #

outerLevel :: ThLevel #

thLevel :: ThStage -> ThLevel #

data TcRnMessage #

An error which might arise during typechecking/renaming.

#### Instances

Instances details

Generic TcRnMessage |

Instance details

Defined in GHC.Tc.Errors.Types

Associated Types

type Rep TcRnMessage |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep TcRnMessage = D1 ('MetaData "TcRnMessage" "GHC.Tc.Errors.Types" "ghc-9.8.2-inplace" 'False) ((((((((C1 ('MetaCons "TcRnUnknownMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (UnknownDiagnostic (DiagnosticOpts TcRnMessage)))) :+: C1 ('MetaCons "TcRnInterfaceError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IfaceMessage))) :+: (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 "TcRnSolverDepthError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 SubGoalDepth))) :+: (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 "TcRnInaccessibleCoAxBranch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CoAxBranch)) :+: 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 "TcRnUnusedQuantifiedTypeVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsDocContext) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsTyVarBndrExistentialFlag)) :+: C1 ('MetaCons "TcRnDodgyImports" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DodgyImportsReason))) :+: (C1 ('MetaCons "TcRnDodgyExports" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt)) :+: (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 "TcRnInvalidWarningCategory" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WarningCategory)) :+: 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 'DecidedUnpack) (Rec0 Char)) :+: (C1 ('MetaCons "TcRnNegativeNumTypeLiteral" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsType GhcPs))) :+: 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 "TcRnIllegalHsBootOrSigDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsBootOrSig) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BadBootDecls)) :+: C1 ('MetaCons "TcRnBootMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsBootOrSig) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BootMismatch))) :+: (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))) :+: (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 "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 "TcRnOversaturatedVisibleKindArg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: 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 "TcRnSimplifiableConstraint" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PredType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 InstanceWhat)) :+: C1 ('MetaCons "TcRnArityMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyThing) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity)))) :+: (C1 ('MetaCons "TcRnIllegalInstance" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IllegalInstanceReason)) :+: (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 (Either ClsInst FamInst)))))))))) :+: ((((((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 GlobalRdrElt) :*: (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 Name) :*: 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 GlobalRdrElt)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs))))) :+: C1 ('MetaCons "TcRnDuplicateFieldExport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (GlobalRdrElt, IE GhcPs)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (GlobalRdrElt, IE GhcPs))))) :+: (C1 ('MetaCons "TcRnAmbiguousRecordUpdate" '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 "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 "TcRnAmbiguousFieldInUpdate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (GlobalRdrElt, GlobalRdrElt, [GlobalRdrElt]))) :+: (C1 ('MetaCons "TcRnBadRecordUpdate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RdrName]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BadRecordUpdateReason)) :+: 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 "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 "TcRnCapturedTermName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either [GlobalRdrElt] Name))))))))) :+: (((((C1 ('MetaCons "TcRnBindVarAlreadyInScope" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LocatedN RdrName])) :+: C1 ('MetaCons "TcRnBindMultipleVariables" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsDocContext) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LocatedN 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 "TcRnTermNameInType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName) :*: 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 "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 "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 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (HsType GhcPs) (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 (HsBndrVis GhcRn) 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 "TcRnDisconnectedTyVar" 'PrefixI 'False) (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 "TcRnUnexpectedKindVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :+: (C1 ('MetaCons "TcRnIllegalKind" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsTypeOrSigType GhcPs)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: 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 "TcRnUnexpectedPatSigType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsPatSigType GhcPs))) :+: C1 ('MetaCons "TcRnIllegalKindSignature" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsType GhcPs))))) :+: ((C1 ('MetaCons "TcRnDataKindsError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeOrKind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsType GhcPs))) :+: 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 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (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 "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 (Maybe ModuleName)))) :+: C1 ('MetaCons "TcRnDifferentExportWarnings" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty SrcSpan)))) :+: (C1 ('MetaCons "TcRnIncompleteExportWarnings" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty SrcSpan))) :+: (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 "TcRnHsigFixityMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyThing) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Fixity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Fixity)))))))) :+: ((((C1 ('MetaCons "TcRnHsigShapeMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsigShapeMismatchReason)) :+: C1 ('MetaCons "TcRnHsigMissingModuleExport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnitState) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Module)))) :+: (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 "TcRnIllegalQuasiQuotes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnTHError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 THError))) :+: (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 "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 "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 "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 "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 "TcRnBindingOfExistingName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :+: C1 ('MetaCons "TcRnMultipleFixityDecls" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SrcSpan) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName))))) :+: (((C1 ('MetaCons "TcRnIllegalPatternSynonymDecl" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnIllegalClassBinding" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DeclSort) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsBindLR GhcPs GhcPs)))) :+: (C1 ('MetaCons "TcRnOrphanCompletePragma" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnEmptyCase" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsMatchContext GhcRn))))) :+: ((C1 ('MetaCons "TcRnNonStdGuards" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NonStandardGuards)) :+: C1 ('MetaCons "TcRnDuplicateSigDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LocatedN RdrName, Sig GhcPs))))) :+: (C1 ('MetaCons "TcRnMisplacedSigDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Sig GhcRn))) :+: (C1 ('MetaCons "TcRnUnexpectedDefaultSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Sig GhcPs))) :+: C1 ('MetaCons "TcRnDuplicateMinimalSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LSig GhcPs)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LSig GhcPs)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LSig GhcPs])))))))) :+: ((((C1 ('MetaCons "TcRnIllegalInvisTyVarBndr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr (HsBndrVis GhcRn) GhcRn))) :+: C1 ('MetaCons "TcRnInvalidInvisTyVarBndr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr (HsBndrVis GhcRn) GhcRn)))) :+: (C1 ('MetaCons "TcRnInvisBndrWithoutSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr (HsBndrVis GhcRn) GhcRn))) :+: C1 ('MetaCons "TcRnDeprecatedInvisTyArgInConPat" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((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 "TcRnUnexpectedStandaloneDerivingDecl" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TcRnUnusedVariableInRuleDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FastString) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: (C1 ('MetaCons "TcRnUnexpectedStandaloneKindSig" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnIllegalRuleLhs" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RuleLhsErrReason) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FastString)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsExpr GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcRn)))))))) :+: (((C1 ('MetaCons "TcRnDuplicateRoleAnnot" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LRoleAnnotDecl GhcPs)))) :+: C1 ('MetaCons "TcRnDuplicateKindSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LStandaloneKindSig GhcPs))))) :+: (C1 ('MetaCons "TcRnIllegalDerivStrategy" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DerivStrategy GhcPs))) :+: C1 ('MetaCons "TcRnIllegalMultipleDerivClauses" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TcRnNoDerivStratSpecified" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: C1 ('MetaCons "TcRnStupidThetaInGadt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsDocContext))) :+: (C1 ('MetaCons "TcRnShadowedTyVarNameInFamResult" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IdP GhcPs))) :+: (C1 ('MetaCons "TcRnIncorrectTyVarOnLhsOfInjCond" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IdP GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LIdP GhcPs))) :+: C1 ('MetaCons "TcRnUnknownTyVarsOnRhsOfInjCond" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]))))))))) :+: ((((((C1 ('MetaCons "TcRnLookupInstance" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Type]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LookupInstanceErrReason))) :+: C1 ('MetaCons "TcRnBadlyStaged" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 StageCheckReason) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int)))) :+: (C1 ('MetaCons "TcRnStageRestriction" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 StageCheckReason)) :+: C1 ('MetaCons "TcRnTyThingUsedWrong" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WrongThingSort) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcTyThing) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))))) :+: ((C1 ('MetaCons "TcRnCannotDefaultKindVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyVar) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind)) :+: C1 ('MetaCons "TcRnUninferrableTyVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [TyCoVar]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UninferrableTyVarCtx))) :+: (C1 ('MetaCons "TcRnSkolemEscape" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [TcTyVar]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcTyVar) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type))) :+: C1 ('MetaCons "TcRnPatSynEscapedCoercion" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty CoVar)))))) :+: (((C1 ('MetaCons "TcRnPatSynExistentialInResult" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcSigmaType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [TyVar]))) :+: C1 ('MetaCons "TcRnPatSynArityMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity)))) :+: (C1 ('MetaCons "TcRnPatSynInvalidRhs" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LPat GhcRn))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [LIdP GhcRn]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PatSynInvalidRhsReason))) :+: C1 ('MetaCons "TcRnZonkerMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ZonkerMessage)))) :+: ((C1 ('MetaCons "TcRnTyFamDepsDisabled" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnAbstractClosedTyFamDecl" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TcRnPartialFieldSelector" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabel)) :+: (C1 ('MetaCons "TcRnBadFieldAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BadFieldAnnotationReason))) :+: C1 ('MetaCons "TcRnSuperclassCycle" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SuperclassCycle))))))) :+: ((((C1 ('MetaCons "TcRnDefaultSigMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "TcRnTyFamsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyFamsDisabledReason))) :+: (C1 ('MetaCons "TcRnBadTyConTelescope" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon)) :+: C1 ('MetaCons "TcRnTyFamResultDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr () GhcRn))))) :+: ((C1 ('MetaCons "TcRnRoleValidationFailed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RoleValidationFailedReason)) :+: C1 ('MetaCons "TcRnCommonFieldResultTypeMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabelString)))) :+: (C1 ('MetaCons "TcRnCommonFieldTypeMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabelString))) :+: (C1 ('MetaCons "TcRnClassExtensionDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DisabledClassExtension)) :+: C1 ('MetaCons "TcRnDataConParentTypeMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))))) :+: (((C1 ('MetaCons "TcRnGADTsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons "TcRnExistentialQuantificationDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon))) :+: (C1 ('MetaCons "TcRnGADTDataContext" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons "TcRnMultipleConForNewtype" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int)))) :+: ((C1 ('MetaCons "TcRnKindSignaturesDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Either (HsType GhcPs) (Name, HsType GhcRn)))) :+: C1 ('MetaCons "TcRnEmptyDataDeclsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))) :+: (C1 ('MetaCons "TcRnRoleMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role))) :+: (C1 ('MetaCons "TcRnRoleCountMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LRoleAnnotDecl GhcRn))) :+: C1 ('MetaCons "TcRnIllegalRoleAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (RoleAnnotDecl GhcRn))))))))) :+: (((((C1 ('MetaCons "TcRnRoleAnnotationsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon)) :+: C1 ('MetaCons "TcRnIncoherentRoles" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon))) :+: (C1 ('MetaCons "TcRnPrecedenceParsingError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity))) :+: C1 ('MetaCons "TcRnSectionPrecedenceError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcPs)))))) :+: ((C1 ('MetaCons "TcRnTypeSynonymCycle" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TySynCycleTyCons)) :+: C1 ('MetaCons "TcRnSelfImport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName))) :+: (C1 ('MetaCons "TcRnNoExplicitImportList" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName)) :+: (C1 ('MetaCons "TcRnSafeImportsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName)) :+: C1 ('MetaCons "TcRnDeprecatedModule" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (WarningTxt GhcRn))))))) :+: (((C1 ('MetaCons "TcRnCompatUnqualifiedImport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ImportDecl GhcPs))) :+: C1 ('MetaCons "TcRnRedundantSourceImport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName))) :+: (C1 ('MetaCons "TcRnImportLookup" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ImportLookupReason)) :+: C1 ('MetaCons "TcRnUnusedImport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ImportDecl GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnusedImportReason)))) :+: ((C1 ('MetaCons "TcRnDuplicateDecls" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty Name))) :+: C1 ('MetaCons "TcRnPackageImportsDisabled" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TcRnIllegalDataCon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: (C1 ('MetaCons "TcRnNestedForallsContexts" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NestedForallsContextsIn)) :+: C1 ('MetaCons "TcRnRedundantRecordWildcard" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "TcRnUnusedRecordWildcard" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Name])) :+: C1 ('MetaCons "TcRnUnusedName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnusedNameProv))) :+: (C1 ('MetaCons "TcRnQualifiedBinder" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: C1 ('MetaCons "TcRnTypeApplicationsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TypeApplication)))) :+: ((C1 ('MetaCons "TcRnInvalidRecordField" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabelString)) :+: C1 ('MetaCons "TcRnTupleTooLarge" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int))) :+: (C1 ('MetaCons "TcRnCTupleTooLarge" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int)) :+: (C1 ('MetaCons "TcRnIllegalInferredTyVars" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (HsTyVarBndr Specificity GhcPs)))) :+: C1 ('MetaCons "TcRnAmbiguousName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobalRdrEnv) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty GlobalRdrElt)))))))) :+: (((C1 ('MetaCons "TcRnBindingNameConflict" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty SrcSpan))) :+: C1 ('MetaCons "TcRnNonCanonicalDefinition" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NonCanonicalDefinition) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsSigType GhcRn)))) :+: (C1 ('MetaCons "TcRnImplicitImportOfPrelude" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnMissingMain" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Module) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName))))) :+: ((C1 ('MetaCons "TcRnGhciUnliftedBind" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id)) :+: C1 ('MetaCons "TcRnGhciMonadLookupFail" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [GlobalRdrElt])))) :+: (C1 ('MetaCons "TcRnMissingRoleAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Role])) :+: (C1 ('MetaCons "TcRnPatersonCondFailure" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatersonCondFailure) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatersonCondFailureContext)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons "TcRnImplicitRhsQuantification" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LocatedN RdrName))))))))))))

Methods

from :: TcRnMessage -> Rep TcRnMessage x #

to :: Rep TcRnMessage x -> TcRnMessage #

type Rep TcRnMessage |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep TcRnMessage = D1 ('MetaData "TcRnMessage" "GHC.Tc.Errors.Types" "ghc-9.8.2-inplace" 'False) ((((((((C1 ('MetaCons "TcRnUnknownMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (UnknownDiagnostic (DiagnosticOpts TcRnMessage)))) :+: C1 ('MetaCons "TcRnInterfaceError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IfaceMessage))) :+: (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 "TcRnSolverDepthError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 SubGoalDepth))) :+: (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 "TcRnInaccessibleCoAxBranch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CoAxBranch)) :+: 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 "TcRnUnusedQuantifiedTypeVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsDocContext) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsTyVarBndrExistentialFlag)) :+: C1 ('MetaCons "TcRnDodgyImports" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DodgyImportsReason))) :+: (C1 ('MetaCons "TcRnDodgyExports" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt)) :+: (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 "TcRnInvalidWarningCategory" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WarningCategory)) :+: 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 'DecidedUnpack) (Rec0 Char)) :+: (C1 ('MetaCons "TcRnNegativeNumTypeLiteral" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsType GhcPs))) :+: 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 "TcRnIllegalHsBootOrSigDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsBootOrSig) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BadBootDecls)) :+: C1 ('MetaCons "TcRnBootMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsBootOrSig) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BootMismatch))) :+: (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))) :+: (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 "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 "TcRnOversaturatedVisibleKindArg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: 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 "TcRnSimplifiableConstraint" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PredType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 InstanceWhat)) :+: C1 ('MetaCons "TcRnArityMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyThing) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity)))) :+: (C1 ('MetaCons "TcRnIllegalInstance" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IllegalInstanceReason)) :+: (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 (Either ClsInst FamInst)))))))))) :+: ((((((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 GlobalRdrElt) :*: (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 Name) :*: 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 GlobalRdrElt)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs))))) :+: C1 ('MetaCons "TcRnDuplicateFieldExport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (GlobalRdrElt, IE GhcPs)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (GlobalRdrElt, IE GhcPs))))) :+: (C1 ('MetaCons "TcRnAmbiguousRecordUpdate" '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 "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 "TcRnAmbiguousFieldInUpdate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (GlobalRdrElt, GlobalRdrElt, [GlobalRdrElt]))) :+: (C1 ('MetaCons "TcRnBadRecordUpdate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RdrName]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BadRecordUpdateReason)) :+: 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 "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 "TcRnCapturedTermName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either [GlobalRdrElt] Name))))))))) :+: (((((C1 ('MetaCons "TcRnBindVarAlreadyInScope" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LocatedN RdrName])) :+: C1 ('MetaCons "TcRnBindMultipleVariables" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsDocContext) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LocatedN 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 "TcRnTermNameInType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName) :*: 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 "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 "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 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (HsType GhcPs) (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 (HsBndrVis GhcRn) 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 "TcRnDisconnectedTyVar" 'PrefixI 'False) (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 "TcRnUnexpectedKindVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :+: (C1 ('MetaCons "TcRnIllegalKind" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsTypeOrSigType GhcPs)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: 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 "TcRnUnexpectedPatSigType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsPatSigType GhcPs))) :+: C1 ('MetaCons "TcRnIllegalKindSignature" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsType GhcPs))))) :+: ((C1 ('MetaCons "TcRnDataKindsError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeOrKind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsType GhcPs))) :+: 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 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (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 "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 (Maybe ModuleName)))) :+: C1 ('MetaCons "TcRnDifferentExportWarnings" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty SrcSpan)))) :+: (C1 ('MetaCons "TcRnIncompleteExportWarnings" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty SrcSpan))) :+: (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 "TcRnHsigFixityMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyThing) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Fixity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Fixity)))))))) :+: ((((C1 ('MetaCons "TcRnHsigShapeMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsigShapeMismatchReason)) :+: C1 ('MetaCons "TcRnHsigMissingModuleExport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnitState) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Module)))) :+: (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 "TcRnIllegalQuasiQuotes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnTHError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 THError))) :+: (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 "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 "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 "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 "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 "TcRnBindingOfExistingName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :+: C1 ('MetaCons "TcRnMultipleFixityDecls" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SrcSpan) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName))))) :+: (((C1 ('MetaCons "TcRnIllegalPatternSynonymDecl" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnIllegalClassBinding" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DeclSort) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsBindLR GhcPs GhcPs)))) :+: (C1 ('MetaCons "TcRnOrphanCompletePragma" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnEmptyCase" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsMatchContext GhcRn))))) :+: ((C1 ('MetaCons "TcRnNonStdGuards" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NonStandardGuards)) :+: C1 ('MetaCons "TcRnDuplicateSigDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LocatedN RdrName, Sig GhcPs))))) :+: (C1 ('MetaCons "TcRnMisplacedSigDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Sig GhcRn))) :+: (C1 ('MetaCons "TcRnUnexpectedDefaultSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Sig GhcPs))) :+: C1 ('MetaCons "TcRnDuplicateMinimalSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LSig GhcPs)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LSig GhcPs)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LSig GhcPs])))))))) :+: ((((C1 ('MetaCons "TcRnIllegalInvisTyVarBndr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr (HsBndrVis GhcRn) GhcRn))) :+: C1 ('MetaCons "TcRnInvalidInvisTyVarBndr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr (HsBndrVis GhcRn) GhcRn)))) :+: (C1 ('MetaCons "TcRnInvisBndrWithoutSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr (HsBndrVis GhcRn) GhcRn))) :+: C1 ('MetaCons "TcRnDeprecatedInvisTyArgInConPat" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((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 "TcRnUnexpectedStandaloneDerivingDecl" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TcRnUnusedVariableInRuleDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FastString) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: (C1 ('MetaCons "TcRnUnexpectedStandaloneKindSig" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnIllegalRuleLhs" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RuleLhsErrReason) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FastString)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsExpr GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcRn)))))))) :+: (((C1 ('MetaCons "TcRnDuplicateRoleAnnot" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LRoleAnnotDecl GhcPs)))) :+: C1 ('MetaCons "TcRnDuplicateKindSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LStandaloneKindSig GhcPs))))) :+: (C1 ('MetaCons "TcRnIllegalDerivStrategy" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DerivStrategy GhcPs))) :+: C1 ('MetaCons "TcRnIllegalMultipleDerivClauses" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TcRnNoDerivStratSpecified" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: C1 ('MetaCons "TcRnStupidThetaInGadt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsDocContext))) :+: (C1 ('MetaCons "TcRnShadowedTyVarNameInFamResult" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IdP GhcPs))) :+: (C1 ('MetaCons "TcRnIncorrectTyVarOnLhsOfInjCond" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IdP GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LIdP GhcPs))) :+: C1 ('MetaCons "TcRnUnknownTyVarsOnRhsOfInjCond" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]))))))))) :+: ((((((C1 ('MetaCons "TcRnLookupInstance" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Type]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LookupInstanceErrReason))) :+: C1 ('MetaCons "TcRnBadlyStaged" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 StageCheckReason) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int)))) :+: (C1 ('MetaCons "TcRnStageRestriction" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 StageCheckReason)) :+: C1 ('MetaCons "TcRnTyThingUsedWrong" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WrongThingSort) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcTyThing) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))))) :+: ((C1 ('MetaCons "TcRnCannotDefaultKindVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyVar) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind)) :+: C1 ('MetaCons "TcRnUninferrableTyVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [TyCoVar]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UninferrableTyVarCtx))) :+: (C1 ('MetaCons "TcRnSkolemEscape" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [TcTyVar]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcTyVar) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type))) :+: C1 ('MetaCons "TcRnPatSynEscapedCoercion" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty CoVar)))))) :+: (((C1 ('MetaCons "TcRnPatSynExistentialInResult" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcSigmaType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [TyVar]))) :+: C1 ('MetaCons "TcRnPatSynArityMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity)))) :+: (C1 ('MetaCons "TcRnPatSynInvalidRhs" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LPat GhcRn))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [LIdP GhcRn]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PatSynInvalidRhsReason))) :+: C1 ('MetaCons "TcRnZonkerMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ZonkerMessage)))) :+: ((C1 ('MetaCons "TcRnTyFamDepsDisabled" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnAbstractClosedTyFamDecl" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TcRnPartialFieldSelector" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabel)) :+: (C1 ('MetaCons "TcRnBadFieldAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BadFieldAnnotationReason))) :+: C1 ('MetaCons "TcRnSuperclassCycle" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SuperclassCycle))))))) :+: ((((C1 ('MetaCons "TcRnDefaultSigMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "TcRnTyFamsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyFamsDisabledReason))) :+: (C1 ('MetaCons "TcRnBadTyConTelescope" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon)) :+: C1 ('MetaCons "TcRnTyFamResultDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr () GhcRn))))) :+: ((C1 ('MetaCons "TcRnRoleValidationFailed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RoleValidationFailedReason)) :+: C1 ('MetaCons "TcRnCommonFieldResultTypeMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabelString)))) :+: (C1 ('MetaCons "TcRnCommonFieldTypeMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabelString))) :+: (C1 ('MetaCons "TcRnClassExtensionDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DisabledClassExtension)) :+: C1 ('MetaCons "TcRnDataConParentTypeMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))))) :+: (((C1 ('MetaCons "TcRnGADTsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons "TcRnExistentialQuantificationDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon))) :+: (C1 ('MetaCons "TcRnGADTDataContext" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons "TcRnMultipleConForNewtype" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int)))) :+: ((C1 ('MetaCons "TcRnKindSignaturesDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Either (HsType GhcPs) (Name, HsType GhcRn)))) :+: C1 ('MetaCons "TcRnEmptyDataDeclsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))) :+: (C1 ('MetaCons "TcRnRoleMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role))) :+: (C1 ('MetaCons "TcRnRoleCountMismatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LRoleAnnotDecl GhcRn))) :+: C1 ('MetaCons "TcRnIllegalRoleAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (RoleAnnotDecl GhcRn))))))))) :+: (((((C1 ('MetaCons "TcRnRoleAnnotationsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon)) :+: C1 ('MetaCons "TcRnIncoherentRoles" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon))) :+: (C1 ('MetaCons "TcRnPrecedenceParsingError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity))) :+: C1 ('MetaCons "TcRnSectionPrecedenceError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcPs)))))) :+: ((C1 ('MetaCons "TcRnTypeSynonymCycle" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TySynCycleTyCons)) :+: C1 ('MetaCons "TcRnSelfImport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName))) :+: (C1 ('MetaCons "TcRnNoExplicitImportList" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName)) :+: (C1 ('MetaCons "TcRnSafeImportsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName)) :+: C1 ('MetaCons "TcRnDeprecatedModule" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (WarningTxt GhcRn))))))) :+: (((C1 ('MetaCons "TcRnCompatUnqualifiedImport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ImportDecl GhcPs))) :+: C1 ('MetaCons "TcRnRedundantSourceImport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName))) :+: (C1 ('MetaCons "TcRnImportLookup" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ImportLookupReason)) :+: C1 ('MetaCons "TcRnUnusedImport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ImportDecl GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnusedImportReason)))) :+: ((C1 ('MetaCons "TcRnDuplicateDecls" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty Name))) :+: C1 ('MetaCons "TcRnPackageImportsDisabled" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TcRnIllegalDataCon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: (C1 ('MetaCons "TcRnNestedForallsContexts" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NestedForallsContextsIn)) :+: C1 ('MetaCons "TcRnRedundantRecordWildcard" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "TcRnUnusedRecordWildcard" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Name])) :+: C1 ('MetaCons "TcRnUnusedName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnusedNameProv))) :+: (C1 ('MetaCons "TcRnQualifiedBinder" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: C1 ('MetaCons "TcRnTypeApplicationsDisabled" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TypeApplication)))) :+: ((C1 ('MetaCons "TcRnInvalidRecordField" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabelString)) :+: C1 ('MetaCons "TcRnTupleTooLarge" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int))) :+: (C1 ('MetaCons "TcRnCTupleTooLarge" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int)) :+: (C1 ('MetaCons "TcRnIllegalInferredTyVars" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (HsTyVarBndr Specificity GhcPs)))) :+: C1 ('MetaCons "TcRnAmbiguousName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobalRdrEnv) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty GlobalRdrElt)))))))) :+: (((C1 ('MetaCons "TcRnBindingNameConflict" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty SrcSpan))) :+: C1 ('MetaCons "TcRnNonCanonicalDefinition" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NonCanonicalDefinition) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsSigType GhcRn)))) :+: (C1 ('MetaCons "TcRnImplicitImportOfPrelude" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnMissingMain" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Module) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName))))) :+: ((C1 ('MetaCons "TcRnGhciUnliftedBind" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id)) :+: C1 ('MetaCons "TcRnGhciMonadLookupFail" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [GlobalRdrElt])))) :+: (C1 ('MetaCons "TcRnMissingRoleAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Role])) :+: (C1 ('MetaCons "TcRnPatersonCondFailure" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatersonCondFailure) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatersonCondFailureContext)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons "TcRnImplicitRhsQuantification" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LocatedN RdrName))))))))))))

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

data ArrowCtxt #

Constructors

NoArrowCtxt |
ArrowCtxt LocalRdrEnv (TcRef WantedConstraints) |

type ThBindEnv = NameEnv (TopLevelFlag, ThLevel) #

type TcTypeEnv = NameEnv TcTyThing #

data TcLclCtxt #

Constructors

TcLclCtxt |

Fields

- tcl_loc :: RealSrcSpan
- tcl_ctxt :: [ErrCtxt]
- tcl_in_gen_code :: Bool
- tcl_tclvl :: TcLevel
- tcl_bndrs :: TcBinderStack
- tcl_rdr :: LocalRdrEnv
- tcl_th_ctxt :: ThStage
- tcl_th_bndrs :: ThBindEnv
- tcl_arrow_ctxt :: ArrowCtxt
- tcl_env :: TcTypeEnv

setLclEnvTcLevel :: TcLevel -> TcLclEnv -> TcLclEnv #

getLclEnvTcLevel :: TcLclEnv -> TcLevel #

setLclEnvLoc :: RealSrcSpan -> TcLclEnv -> TcLclEnv #

getLclEnvLoc :: TcLclEnv -> RealSrcSpan #

lclEnvInGeneratedCode :: TcLclEnv -> Bool #

modifyLclCtxt :: (TcLclCtxt -> TcLclCtxt) -> TcLclEnv -> TcLclEnv #

type CompleteMatches = [CompleteMatch] #

data CompleteMatch #

A list of conlikes which represents a complete pattern match. These arise from `COMPLETE` signatures. See also Note [Implementation of COMPLETE pragmas].

#### Instances

Instances details

Outputable CompleteMatch |
Instance details Defined in GHC.Types.CompleteMatch Methods ppr :: CompleteMatch -> SDoc #

getPlatform :: TcRnIf a b Platform #

Get target platform

addErr :: TcRnMessage -> TcRn () #

data IOEnvFailure #

Constructors

IOEnvFailure |

#### Instances

Instances details

Exception IOEnvFailure |
Instance details Defined in GHC.Data.IOEnv Methods toException :: IOEnvFailure -> SomeException # fromException :: SomeException -> Maybe IOEnvFailure # displayException :: IOEnvFailure -> String #
Show IOEnvFailure |
Instance details Defined in GHC.Data.IOEnv Methods showsPrec :: Int -> IOEnvFailure -> ShowS # show :: IOEnvFailure -> String # showList :: [IOEnvFailure] -> ShowS #

data IOEnv env a #

#### Instances

Instances details

HasDynFlags BkpM |
Instance details Defined in GHC.Driver.Backpack Methods getDynFlags :: BkpM DynFlags #
GhcMonad BkpM |
Instance details Defined in GHC.Driver.Backpack Methods getSession :: BkpM HscEnv # setSession :: HscEnv -> BkpM () #
HasLogger BkpM |
Instance details Defined in GHC.Driver.Backpack Methods getLogger :: BkpM Logger #
MonadFail (IOEnv m) |
Instance details Defined in GHC.Data.IOEnv Methods fail :: String -> IOEnv m a #
MonadFix (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods mfix :: (a -> IOEnv env a) -> IOEnv env a #
MonadIO (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods liftIO :: IO a -> IOEnv env a #
Alternative (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods empty :: IOEnv env a # (<|>) :: IOEnv env a -> IOEnv env a -> IOEnv env a # some :: IOEnv env a -> IOEnv env [a] # many :: IOEnv env a -> IOEnv env [a] #
Applicative (IOEnv m) |
Instance details Defined in GHC.Data.IOEnv Methods pure :: a -> IOEnv m a # (<*>) :: IOEnv m (a -> b) -> IOEnv m a -> IOEnv m b # liftA2 :: (a -> b -> c) -> IOEnv m a -> IOEnv m b -> IOEnv m c # (*>) :: IOEnv m a -> IOEnv m b -> IOEnv m b # (<*) :: IOEnv m a -> IOEnv m b -> IOEnv m a #
Functor (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods fmap :: (a -> b) -> IOEnv env a -> IOEnv env b # (<$) :: a -> IOEnv env b -> IOEnv env a #
Monad (IOEnv m) |
Instance details Defined in GHC.Data.IOEnv Methods (>>=) :: IOEnv m a -> (a -> IOEnv m b) -> IOEnv m b # (>>) :: IOEnv m a -> IOEnv m b -> IOEnv m b # return :: a -> IOEnv m a #
MonadPlus (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods mzero :: IOEnv env a # mplus :: IOEnv env a -> IOEnv env a -> IOEnv env a #
MonadCatch (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods catch :: (HasCallStack, Exception e) => IOEnv env a -> (e -> IOEnv env a) -> IOEnv env a #
MonadMask (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods mask :: HasCallStack => ((forall a. IOEnv env a -> IOEnv env a) -> IOEnv env b) -> IOEnv env b # uninterruptibleMask :: HasCallStack => ((forall a. IOEnv env a -> IOEnv env a) -> IOEnv env b) -> IOEnv env b # generalBracket :: HasCallStack => IOEnv env a -> (a -> ExitCase b -> IOEnv env c) -> (a -> IOEnv env b) -> IOEnv env (b, c) #
MonadThrow (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods throwM :: (HasCallStack, Exception e) => e -> IOEnv env a #
ContainsDynFlags env => HasDynFlags (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods getDynFlags :: IOEnv env DynFlags #
ContainsHooks env => HasHooks (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods getHooks :: IOEnv env Hooks #
ContainsModule env => HasModule (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods getModule :: IOEnv env Module #
ContainsLogger env => HasLogger (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods getLogger :: IOEnv env Logger #

failM :: IOEnv env a #

failWithM :: String -> IOEnv env a #

runIOEnv :: env -> IOEnv env a -> IO a #

fixM :: (a -> IOEnv env a) -> IOEnv env a #

tryM :: IOEnv env r -> IOEnv env (Either IOEnvFailure r) #

tryAllM :: IOEnv env r -> IOEnv env (Either SomeException r) #

tryMostM :: IOEnv env r -> IOEnv env (Either SomeException r) #

unsafeInterleaveM :: IOEnv env a -> IOEnv env a #

uninterruptibleMaskM_ :: IOEnv env a -> IOEnv env a #

updMutVar :: IORef a -> (a -> a) -> IOEnv env () #

atomicUpdMutVar :: IORef a -> (a -> (a, b)) -> IOEnv env b #

Atomically update the reference. Does not force the evaluation of the new variable contents. For strict update, use `atomicUpdMutVar'`.

atomicUpdMutVar' :: IORef a -> (a -> (a, b)) -> IOEnv env b #

Strict variant of `atomicUpdMutVar`.

updEnv :: (env -> env') -> IOEnv env' a -> IOEnv env a #

Perform a computation with an altered environment

getNamePprCtx :: TcRn NamePprCtx #

getSrcSpanM :: TcRn SrcSpan #

type THDocs = Map DocLoc (HsDoc GhcRn) #

The current collection of docs that Template Haskell has built up via putDoc.

data DocLoc #

This is a mirror of Template Haskell's DocLoc, but the TH names are resolved to GHC names.

Constructors

DeclDoc Name |
ArgDoc Name Int |
InstDoc Name |
ModuleDoc |

#### Instances

Instances details

Eq DocLoc |
Instance details Defined in GHC.Tc.Types Methods (==) :: DocLoc -> DocLoc -> Bool # (/=) :: DocLoc -> DocLoc -> Bool #
Ord DocLoc |
Instance details Defined in GHC.Tc.Types Methods compare :: DocLoc -> DocLoc -> Ordering # (<) :: DocLoc -> DocLoc -> Bool # (<=) :: DocLoc -> DocLoc -> Bool # (>) :: DocLoc -> DocLoc -> Bool # (>=) :: DocLoc -> DocLoc -> Bool # max :: DocLoc -> DocLoc -> DocLoc # min :: DocLoc -> DocLoc -> DocLoc #

type RoleAnnotEnv = NameEnv (LRoleAnnotDecl GhcRn) #

data DefaultingPlugin #

A plugin for controlling defaulting.

Constructors

DefaultingPlugin |

Fields

- dePluginInit :: TcPluginM s

  Initialize plugin, when entering type-checker.

- dePluginRun :: s -> FillDefaulting

  Default some types

- dePluginStop :: s -> TcPluginM ()

  Clean up after the plugin, when exiting the type-checker.

type FillDefaulting = WantedConstraints -> TcPluginM DefaultingPluginResult #

type DefaultingPluginResult = [DefaultingProposal] #

data DefaultingProposal #

A collection of candidate default types for a type variable.

Constructors

DefaultingProposal |

Fields

- deProposalTyVar :: TcTyVar

  The type variable to default.

- deProposalCandidates :: [Type]

  Candidate types to default the type variable to.

- deProposalCts :: [Ct]

  The constraints against which defaults are checked.

#### Instances

Instances details

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

data TcPluginRewriteResult #

Constructors

TcPluginNoRewrite | The plugin does not rewrite the type family application.
TcPluginRewriteTo | The plugin rewrites the type family application providing a rewriting together with evidence: a `Reduction`, which contains the rewritten type together with a `Coercion` whose right-hand-side type is the rewritten type. The plugin can also emit additional Wanted constraints.

Fields

- tcPluginReduction :: !Reduction
- tcRewriterNewWanteds :: [Ct]

data TcPluginSolveResult #

Result of running a solver plugin.

Constructors

TcPluginSolveResult |

Fields

- tcPluginInsolubleCts :: [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.

Bundled Patterns

pattern TcPluginOk :: [(EvTerm, Ct)] -> [Ct] -> TcPluginSolveResult | 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.
pattern TcPluginContradiction :: [Ct] -> TcPluginSolveResult | 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.

data TcPlugin #

Constructors

TcPlugin |

Fields

- tcPluginInit :: TcPluginM s

  Initialize plugin, when entering type-checker.

- tcPluginSolve :: s -> TcPluginSolver

  Solve 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 TcPluginRewriter

  Rewrite 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 `\ _ -> emptyUFM` if your plugin does not provide this functionality.

- tcPluginStop :: s -> TcPluginM ()

  Clean up after the plugin, when exiting the type-checker.

data TcPluginM a #

`TcPluginM` is the monad in which type-checking plugins operate.

#### Instances

Instances details

MonadFail TcPluginM |
Instance details Defined in GHC.Tc.Types Methods fail :: String -> TcPluginM a #
Applicative TcPluginM |
Instance details Defined in GHC.Tc.Types Methods pure :: a -> TcPluginM a # (<*>) :: TcPluginM (a -> b) -> TcPluginM a -> TcPluginM b # liftA2 :: (a -> b -> c) -> TcPluginM a -> TcPluginM b -> TcPluginM c # (*>) :: TcPluginM a -> TcPluginM b -> TcPluginM b # (<*) :: TcPluginM a -> TcPluginM b -> TcPluginM a #
Functor TcPluginM |
Instance details Defined in GHC.Tc.Types Methods fmap :: (a -> b) -> TcPluginM a -> TcPluginM b # (<$) :: a -> TcPluginM b -> TcPluginM a #
Monad TcPluginM |
Instance details Defined in GHC.Tc.Types Methods (>>=) :: TcPluginM a -> (a -> TcPluginM b) -> TcPluginM b # (>>) :: TcPluginM a -> TcPluginM b -> TcPluginM b # return :: a -> TcPluginM a #

type TcPluginRewriter #

Arguments

= RewriteEnv | Rewriter environment
-> [Ct] | Givens
-> [TcType] | type family arguments
-> TcPluginM TcPluginRewriteResult |

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.

type TcPluginSolver #

Arguments

= EvBindsVar |
-> [Ct] | Givens
-> [Ct] | Wanteds
-> TcPluginM TcPluginSolveResult |

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.

data SelfBootInfo #

Constructors

NoSelfBoot |
SelfBoot |

Fields

- sb_mds :: ModDetails

data FrontendResult #

`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

FrontendTypecheck TcGblEnv |

data IfLclEnv #

Constructors

IfLclEnv |

Fields

- if_mod :: !Module
- if_boot :: IsBootInterface
- if_loc :: SDoc
- if_nsubst :: Maybe NameShape
- if_implicits_env :: Maybe TypeEnv
- if_tv_env :: FastStringEnv TyVar
- if_id_env :: FastStringEnv Id

data IfGblEnv #

Constructors

IfGblEnv |

Fields

- if_doc :: SDoc
- if_rec_types :: KnotVars (IfG TypeEnv)

data RewriteEnv #

A `RewriteEnv` carries the necessary context for performing rewrites (i.e. type family reductions and following filled-in metavariables) in the solver.

Constructors

RE |

Fields

- re_loc :: !CtLoc

  In 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 :: !CtFlavour
- re_eq_rel :: !EqRel

  At what role are we rewriting?

  See Note [Rewriter EqRels] in GHC.Tc.Solver.Rewrite

- re_rewriters :: !(TcRef RewriterSet)

  See Note [Wanteds rewrite Wanteds]

type TcM = TcRn #

Historical "type-checking monad" (now it's just `TcRn`).

type RnM = TcRn #

Historical "renaming monad" (now it's just `TcRn`).

type IfL = IfM IfLclEnv #

type IfG = IfM () #

type IfM lcl = TcRnIf IfGblEnv lcl #

type TcRn = TcRnIf TcGblEnv TcLclEnv #

type TcRnIf a b = IOEnv (Env a b) #

data NameShape #

A `NameShape` is a substitution on `Name`s 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 `AvailInfo`s 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 `AvailInfo`s 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

NameShape |

Fields

- ns_mod_name :: ModuleName
- ns_exports :: [AvailInfo]
- ns_map :: OccEnv Name

tcVisibleOrphanMods :: TcGblEnv -> ModuleSet #

bootExports :: SelfBootInfo -> NameSet #

removeBindingShadowing :: HasOccName a => [a] -> [a] #

mkModDeps :: Set (UnitId, ModuleNameWithIsBoot) -> InstalledModuleEnv ModuleNameWithIsBoot #

emptyImportAvails :: ImportAvails #

plusImportAvails :: ImportAvails -> ImportAvails -> ImportAvails #

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.

unsafeTcPluginTcM :: TcM a -> TcPluginM a #

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.

mkRoleAnnotEnv :: [LRoleAnnotDecl GhcRn] -> RoleAnnotEnv #

emptyRoleAnnotEnv :: RoleAnnotEnv #

lookupRoleAnnot :: RoleAnnotEnv -> Name -> Maybe (LRoleAnnotDecl GhcRn) #

getRoleAnnots :: [Name] -> RoleAnnotEnv -> [LRoleAnnotDecl GhcRn] #

lintGblEnv :: Logger -> DynFlags -> TcGblEnv -> TcM () #

Check the `TcGblEnv` for consistency. Currently, only checks axioms, but should check other aspects, too.

data IsExtraConstraint #

Constructors

YesExtraConstraint |
NoExtraConstraint |

#### Instances

Instances details

Outputable IsExtraConstraint |
Instance details Defined in GHC.Tc.Utils.Monad Methods ppr :: IsExtraConstraint -> SDoc #

initTc :: HscEnv -> HscSource -> Bool -> Module -> RealSrcSpan -> TcM r -> IO (Messages TcRnMessage, Maybe r) #

Setup the initial typechecking environment

initTcWithGbl :: HscEnv -> TcGblEnv -> RealSrcSpan -> TcM r -> IO (Messages TcRnMessage, Maybe r) #

Run a `TcM` action in the context of an existing `GblEnv`.

initTcInteractive :: HscEnv -> TcM a -> IO (Messages TcRnMessage, Maybe a) #

initTcRnIf #

Arguments

:: Char | Mask for unique supply
-> HscEnv |
-> gbl |
-> lcl |
-> TcRnIf gbl lcl a |
-> IO a |

discardResult :: TcM a -> TcM () #

getTopEnv :: TcRnIf gbl lcl HscEnv #

updTopEnv :: (HscEnv -> HscEnv) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

getGblEnv :: TcRnIf gbl lcl gbl #

updGblEnv :: (gbl -> gbl) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

setGblEnv :: gbl' -> TcRnIf gbl' lcl a -> TcRnIf gbl lcl a #

getLclEnv :: TcRnIf gbl lcl lcl #

updLclEnv :: (lcl -> lcl) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

updLclCtxt :: (TcLclCtxt -> TcLclCtxt) -> TcRnIf gbl TcLclEnv a -> TcRnIf gbl TcLclEnv a #

setLclEnv :: lcl' -> TcRnIf gbl lcl' a -> TcRnIf gbl lcl a #

restoreLclEnv :: TcLclEnv -> TcRnIf gbl TcLclEnv a -> TcRnIf gbl TcLclEnv a #

getEnvs :: TcRnIf gbl lcl (gbl, lcl) #

setEnvs :: (gbl', lcl') -> TcRnIf gbl' lcl' a -> TcRnIf gbl lcl a #

updEnvs :: ((gbl, lcl) -> (gbl, lcl)) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

restoreEnvs :: (TcGblEnv, TcLclEnv) -> TcRn a -> TcRn a #

xoptM :: Extension -> TcRnIf gbl lcl Bool #

doptM :: DumpFlag -> TcRnIf gbl lcl Bool #

goptM :: GeneralFlag -> TcRnIf gbl lcl Bool #

woptM :: WarningFlag -> TcRnIf gbl lcl Bool #

setXOptM :: Extension -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

unsetXOptM :: Extension -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

unsetGOptM :: GeneralFlag -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

unsetWOptM :: WarningFlag -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

whenDOptM :: DumpFlag -> TcRnIf gbl lcl () -> TcRnIf gbl lcl () #

Do it flag is true

whenGOptM :: GeneralFlag -> TcRnIf gbl lcl () -> TcRnIf gbl lcl () #

whenWOptM :: WarningFlag -> TcRnIf gbl lcl () -> TcRnIf gbl lcl () #

whenXOptM :: Extension -> TcRnIf gbl lcl () -> TcRnIf gbl lcl () #

unlessXOptM :: Extension -> TcRnIf gbl lcl () -> TcRnIf gbl lcl () #

getGhcMode :: TcRnIf gbl lcl GhcMode #

withoutDynamicNow :: TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

updTopFlags :: (DynFlags -> DynFlags) -> TcRnIf gbl lcl a -> TcRnIf gbl lcl a #

getEpsVar :: TcRnIf gbl lcl (TcRef ExternalPackageState) #

getEps :: TcRnIf gbl lcl ExternalPackageState #

updateEps :: (ExternalPackageState -> (ExternalPackageState, a)) -> TcRnIf gbl lcl a #

Update the external package state. Returns the second result of the modifier function.

This is an atomic operation and forces evaluation of the modified EPS in order to avoid space leaks.

updateEps_ :: (ExternalPackageState -> ExternalPackageState) -> TcRnIf gbl lcl () #

Update the external package state.

This is an atomic operation and forces evaluation of the modified EPS in order to avoid space leaks.

getHpt :: TcRnIf gbl lcl HomePackageTable #

getEpsAndHug :: TcRnIf gbl lcl (ExternalPackageState, HomeUnitGraph) #

withException :: MonadIO m => SDocContext -> m (MaybeErr SDoc a) -> m a #

A convenient wrapper for taking a `MaybeErr SDoc a` and throwing an exception if it is an error.

withIfaceErr :: MonadIO m => SDocContext -> m (MaybeErr MissingInterfaceError a) -> m a #

newArrowScope :: TcM a -> TcM a #

escapeArrowScope :: TcM a -> TcM a #

newUniqueSupply :: TcRnIf gbl lcl UniqSupply #

cloneLocalName :: Name -> TcM Name #

newNameAt :: OccName -> SrcSpan -> TcM Name #

newSysName :: OccName -> TcRnIf gbl lcl Name #

newSysLocalId :: FastString -> Mult -> TcType -> TcRnIf gbl lcl TcId #

newSysLocalIds :: FastString -> [Scaled TcType] -> TcRnIf gbl lcl [TcId] #

traceTc :: String -> SDoc -> TcRn () #

traceRn :: String -> SDoc -> TcRn () #

traceOptTcRn :: DumpFlag -> SDoc -> TcRn () #

dumpOptTcRn :: DumpFlag -> String -> DumpFormat -> SDoc -> TcRn () #

Dump if the given `DumpFlag` is set.

dumpTcRn :: Bool -> DumpFlag -> String -> DumpFormat -> SDoc -> TcRn () #

Unconditionally dump some trace output

Certain tests (T3017, Roles3, T12763 etc.) expect part of the output generated by `-ddump-types` to be in `PprUser` style. However, generally we want all other debugging output to use `PprDump` style. We `PprUser` style if `useUserStyle` is True.

printForUserTcRn :: SDoc -> TcRn () #

Like logInfoTcRn, but for user consumption

traceIf :: SDoc -> TcRnIf m n () #

traceOptIf :: DumpFlag -> SDoc -> TcRnIf m n () #

getIsGHCi :: TcRn Bool #

getGHCiMonad :: TcRn Name #

getInteractivePrintName :: TcRn Name #

tcIsHsBootOrSig :: TcRn Bool #

tcHscSource :: TcRn HscSource #

tcIsHsig :: TcRn Bool #

tcSelfBootInfo :: TcRn SelfBootInfo #

getGlobalRdrEnv :: TcRn GlobalRdrEnv #

getRdrEnvs :: TcRn (GlobalRdrEnv, LocalRdrEnv) #

getImports :: TcRn ImportAvails #

getFixityEnv :: TcRn FixityEnv #

extendFixityEnv :: [(Name, FixItem)] -> RnM a -> RnM a #

getDeclaredDefaultTys :: TcRn (Maybe [Type]) #

addDependentFiles :: [FilePath] -> TcRn () #

inGeneratedCode :: TcRn Bool #

setSrcSpan :: SrcSpan -> TcRn a -> TcRn a #

setInGeneratedCode :: TcRn a -> TcRn a #

Mark the inner computation as being done inside generated code.

See Note [Error contexts in generated code]

setSrcSpanA :: SrcSpanAnn' ann -> TcRn a -> TcRn a #

addLocM :: (a -> TcM b) -> Located a -> TcM b #

addLocMA :: (a -> TcM b) -> GenLocated (SrcSpanAnn' ann) a -> TcM b #

wrapLocM :: (a -> TcM b) -> Located a -> TcM (Located b) #

wrapLocAM :: (a -> TcM b) -> LocatedAn an a -> TcM (Located b) #

wrapLocMA :: (a -> TcM b) -> GenLocated (SrcSpanAnn' ann) a -> TcRn (GenLocated (SrcSpanAnn' ann) b) #

wrapLocFstM :: (a -> TcM (b, c)) -> Located a -> TcM (Located b, c) #

wrapLocFstMA :: (a -> TcM (b, c)) -> GenLocated (SrcSpanAnn' ann) a -> TcM (GenLocated (SrcSpanAnn' ann) b, c) #

wrapLocSndM :: (a -> TcM (b, c)) -> Located a -> TcM (b, Located c) #

wrapLocSndMA :: (a -> TcM (b, c)) -> GenLocated (SrcSpanAnn' ann) a -> TcM (b, GenLocated (SrcSpanAnn' ann) c) #

wrapLocM_ :: (a -> TcM ()) -> Located a -> TcM () #

wrapLocMA_ :: (a -> TcM ()) -> LocatedA a -> TcM () #

getErrsVar :: TcRn (TcRef (Messages TcRnMessage)) #

setErrsVar :: TcRef (Messages TcRnMessage) -> TcRn a -> TcRn a #

failWith :: TcRnMessage -> TcRn a #

failAt :: SrcSpan -> TcRnMessage -> TcRn a #

addErrAt :: SrcSpan -> TcRnMessage -> TcRn () #

mkDetailedMessage :: ErrInfo -> TcRnMessage -> TcRnMessageDetailed #

addErrs :: [(SrcSpan, TcRnMessage)] -> TcRn () #

checkErr :: Bool -> TcRnMessage -> TcRn () #

checkErrAt :: SrcSpan -> Bool -> TcRnMessage -> TcRn () #

addMessages :: Messages TcRnMessage -> TcRn () #

discardWarnings :: TcRn a -> TcRn a #

mkTcRnMessage :: SrcSpan -> TcRnMessage -> TcRn (MsgEnvelope TcRnMessage) #

reportDiagnostics :: [MsgEnvelope TcRnMessage] -> TcM () #

reportDiagnostic :: MsgEnvelope TcRnMessage -> TcRn () #

checkNoErrs :: TcM r -> TcM r #

whenNoErrs :: TcM () -> TcM () #

ifErrsM :: TcRn r -> TcRn r -> TcRn r #

failIfErrsM :: TcRn () #

getErrCtxt :: TcM [ErrCtxt] #

setErrCtxt :: [ErrCtxt] -> TcM a -> TcM a #

addErrCtxt :: SDoc -> TcM a -> TcM a #

Add a fixed message to the error context. This message should not do any tidying.

addErrCtxtM :: (TidyEnv -> ZonkM (TidyEnv, SDoc)) -> TcM a -> TcM a #

Add a message to the error context. This message may do tidying.

addLandmarkErrCtxt :: SDoc -> TcM a -> TcM a #

Add a fixed landmark message to the error context. A landmark message is always sure to be reported, even if there is a lot of context. It also doesn't count toward the maximum number of contexts reported.

addLandmarkErrCtxtM :: (TidyEnv -> ZonkM (TidyEnv, SDoc)) -> TcM a -> TcM a #

Variant of `addLandmarkErrCtxt` that allows for monadic operations and tidying.

popErrCtxt :: TcM a -> TcM a #

getCtLocM :: CtOrigin -> Maybe TypeOrKind -> TcM CtLoc #

mkCtLocEnv :: TcLclEnv -> CtLocEnv #

setCtLocM :: CtLoc -> TcM a -> TcM a #

askNoErrs :: TcRn a -> TcRn (a, Bool) #

tryCaptureConstraints :: TcM a -> TcM (Maybe a, WantedConstraints) #

captureConstraints :: TcM a -> TcM (a, WantedConstraints) #

tcCollectingUsage :: TcM a -> TcM (UsageEnv, a) #

`tcCollectingUsage thing_inside` runs `thing_inside` and returns the usage information which was collected as part of the execution of `thing_inside`. Careful: `tcCollectingUsage thing_inside` itself does not report any usage information, it's up to the caller to incorporate the returned usage information into the larger context appropriately.

tcScalingUsage :: Mult -> TcM a -> TcM a #

`tcScalingUsage mult thing_inside` runs `thing_inside` and scales all the usage information by `mult`.

tcEmitBindingUsage :: UsageEnv -> TcM () #

attemptM :: TcRn r -> TcRn (Maybe r) #

recoverM :: TcRn r -> TcRn r -> TcRn r #

mapAndRecoverM :: (a -> TcRn b) -> [a] -> TcRn [b] #

Drop elements of the input that fail, so the result list can be shorter than the argument list

mapAndReportM :: (a -> TcRn b) -> [a] -> TcRn [b] #

Apply the function to all elements on the input list If all succeed, return the list of results Otherwise fail, propagating all errors

foldAndRecoverM :: (b -> a -> TcRn b) -> b -> [a] -> TcRn b #

The accumulator is not updated if the action fails

tryTc :: TcRn a -> TcRn (Maybe a, Messages TcRnMessage) #

discardErrs :: TcRn a -> TcRn a #

tryTcDiscardingErrs :: TcM r -> TcM r -> TcM r #

addErrTc :: TcRnMessage -> TcM () #

addErrTcM :: (TidyEnv, TcRnMessage) -> TcM () #

failWithTc :: TcRnMessage -> TcM a #

failWithTcM :: (TidyEnv, TcRnMessage) -> TcM a #

checkTc :: Bool -> TcRnMessage -> TcM () #

checkTcM :: Bool -> (TidyEnv, TcRnMessage) -> TcM () #

failIfTc :: Bool -> TcRnMessage -> TcM () #

failIfTcM :: Bool -> (TidyEnv, TcRnMessage) -> TcM () #

warnIf :: Bool -> TcRnMessage -> TcRn () #

Display a warning if a condition is met.

diagnosticTc :: Bool -> TcRnMessage -> TcM () #

Display a warning if a condition is met.

diagnosticTcM :: Bool -> (TidyEnv, TcRnMessage) -> TcM () #

Display a diagnostic if a condition is met.

addDiagnosticTc :: TcRnMessage -> TcM () #

Display a diagnostic in the current context.

addDiagnosticTcM :: (TidyEnv, TcRnMessage) -> TcM () #

Display a diagnostic in a given context.

addDetailedDiagnostic :: (ErrInfo -> TcRnMessage) -> TcM () #

A variation of `addDiagnostic` that takes a function to produce a `TcRnDsMessage` given some additional context about the diagnostic.

addTcRnDiagnostic :: TcRnMessage -> TcM () #

addDiagnostic :: TcRnMessage -> TcRn () #

Display a diagnostic for the current source location, taken from the `TcRn` monad.

addDiagnosticAt :: SrcSpan -> TcRnMessage -> TcRn () #

Display a diagnostic for a given source location.

mkErrInfo :: TidyEnv -> [ErrCtxt] -> TcM SDoc #

debugTc :: TcM () -> TcM () #

addTopEvBinds :: Bag EvBind -> TcM a -> TcM a #

newTcEvBinds :: TcM EvBindsVar #

newNoTcEvBinds :: TcM EvBindsVar #

Creates an EvBindsVar incapable of holding any bindings. It still tracks covar usages (see comments on ebv_tcvs in GHC.Tc.Types.Evidence), thus must be made monadically

cloneEvBindsVar :: EvBindsVar -> TcM EvBindsVar #

getTcEvTyCoVars :: EvBindsVar -> TcM TyCoVarSet #

getTcEvBindsMap :: EvBindsVar -> TcM EvBindMap #

setTcEvBindsMap :: EvBindsVar -> EvBindMap -> TcM () #

addTcEvBind :: EvBindsVar -> EvBind -> TcM () #

chooseUniqueOccTc :: (OccSet -> OccName) -> TcM OccName #

getConstraintVar :: TcM (TcRef WantedConstraints) #

setConstraintVar :: TcRef WantedConstraints -> TcM a -> TcM a #

emitStaticConstraints :: WantedConstraints -> TcM () #

emitConstraints :: WantedConstraints -> TcM () #

emitSimple :: Ct -> TcM () #

emitSimples :: Cts -> TcM () #

emitImplication :: Implication -> TcM () #

emitImplications :: Bag Implication -> TcM () #

emitDelayedErrors :: Bag DelayedError -> TcM () #

emitHole :: Hole -> TcM () #

emitHoles :: Bag Hole -> TcM () #

emitNotConcreteError :: NotConcreteError -> TcM () #

discardConstraints :: TcM a -> TcM a #

Throw out any constraints emitted by the thing_inside

pushLevelAndCaptureConstraints :: TcM a -> TcM (TcLevel, WantedConstraints, a) #

The name says it all. The returned TcLevel is the *inner* TcLevel.

pushTcLevelM_ :: TcM a -> TcM a #

pushTcLevelM :: TcM a -> TcM (TcLevel, a) #

getTcLevel :: TcM TcLevel #

setTcLevel :: TcLevel -> TcM a -> TcM a #

isTouchableTcM :: TcTyVar -> TcM Bool #

getLclTypeEnv :: TcM TcTypeEnv #

setLclTypeEnv :: TcLclEnv -> TcM a -> TcM a #

traceTcConstraints :: String -> TcM () #

emitAnonTypeHole :: IsExtraConstraint -> TcTyVar -> TcM () #

emitNamedTypeHole :: (Name, TcTyVar) -> TcM () #

recordThUse :: TcM () #

recordThSpliceUse :: TcM () #

recordThNeededRuntimeDeps :: [Linkable] -> PkgsLoaded -> TcM () #

keepAlive :: Name -> TcRn () #

getStage :: TcM ThStage #

getStageAndBindLevel :: Name -> TcRn (Maybe (TopLevelFlag, ThLevel, ThStage)) #

setStage :: ThStage -> TcM a -> TcRn a #

addModFinalizersWithLclEnv :: ThModFinalizers -> TcM () #

Adds the given modFinalizers to the global environment and set them to use the current local environment.

recordUnsafeInfer :: Messages TcRnMessage -> TcM () #

Mark that safe inference has failed See Note [Safe Haskell Overlapping Instances Implementation] although this is used for more than just that failure case.

finalSafeMode :: DynFlags -> TcGblEnv -> IO SafeHaskellMode #

Figure out the final correct safe haskell mode

fixSafeInstances :: SafeHaskellMode -> [ClsInst] -> [ClsInst] #

Switch instances to safe instances if we're in Safe mode.

getLocalRdrEnv :: RnM LocalRdrEnv #

setLocalRdrEnv :: LocalRdrEnv -> RnM a -> RnM a #

mkIfLclEnv :: Module -> SDoc -> IsBootInterface -> IfLclEnv #

initIfaceTcRn :: IfG a -> TcRn a #

Run an `IfG` (top-level interface monad) computation inside an existing `TcRn` (typecheck-renaming monad) computation by initializing an `IfGblEnv` based on `TcGblEnv`.

initIfaceLoad :: HscEnv -> IfG a -> IO a #

`initIfaceLoad` can be used when there's no chance that the action will call `typecheckIface` when inside a module loop and hence `tcIfaceGlobal`.

initIfaceLoadModule :: HscEnv -> Module -> IfG a -> IO a #

This is used when we are doing to call `typecheckModule` on an `ModIface`, if it's part of a loop with some other modules then we need to use their IORef TypeEnv vars when typechecking but crucially not our own.

initIfaceCheck :: SDoc -> HscEnv -> IfG a -> IO a #

initIfaceLcl :: Module -> SDoc -> IsBootInterface -> IfL a -> IfM lcl a #

initIfaceLclWithSubst :: Module -> SDoc -> IsBootInterface -> NameShape -> IfL a -> IfM lcl a #

Initialize interface typechecking, but with a `NameShape` to apply when typechecking top-level `OccName`s (see `lookupIfaceTop`)

getIfModule :: IfL Module #

failIfM :: SDoc -> IfL a #

forkM :: SDoc -> IfL a -> IfL a #

Run thing_inside in an interleaved thread. It shares everything with the parent thread, so this is DANGEROUS.

It throws an error if the computation fails

It's used for lazily type-checking interface signatures, which is pretty benign.

See Note [Masking exceptions in forkM]

setImplicitEnvM :: TypeEnv -> IfL a -> IfL a #

getCCIndexM :: (gbl -> TcRef CostCentreState) -> FastString -> TcRnIf gbl lcl CostCentreIndex #

Get the next cost centre index associated with a given name.

getCCIndexTcM :: FastString -> TcM CostCentreIndex #

See `getCCIndexM`.

liftZonkM :: ZonkM a -> TcM a #

Lift a computation from the dedicated zonking monad `ZonkM` to the full-fledged `TcM` monad.

module GHC.Types.Basic

module GHC.Types.Id

data Name #

A unique, unambiguous name for something, containing information about where that thing originated.

#### Instances

Instances details

Data Name |

Instance details

Defined in GHC.Types.Name

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Name -> c Name #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Name #

toConstr :: Name -> Constr #

dataTypeOf :: Name -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Name) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Name) #

gmapT :: (forall b. Data b => b -> b) -> Name -> Name #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r #

gmapQ :: (forall d. Data d => d -> u) -> Name -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Name -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Name -> m Name #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Name -> m Name #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Name -> m Name #

NFData Name |
Instance details Defined in GHC.Types.Name Methods rnf :: Name -> () #
ModifyState Name |
Instance details Defined in GHC.Iface.Ext.Ast Methods addSubstitution :: Name -> Name -> HieState -> HieState
NamedThing Name |
Instance details Defined in GHC.Types.Name Methods getOccName :: Name -> OccName # getName :: Name -> Name #
HasOccName Name |
Instance details Defined in GHC.Types.Name Methods occName :: Name -> OccName #
Uniquable Name |
Instance details Defined in GHC.Types.Name Methods getUnique :: Name -> Unique #
Binary Name | Assumes that the `Name` is a non-binding one. See `putIfaceTopBndr` and `getIfaceTopBndr` for serializing binding `Name`s. See `UserData` for the rationale for this distinction.
Instance details Defined in GHC.Types.Name Methods put_ :: BinHandle -> Name -> IO () # put :: BinHandle -> Name -> IO (Bin Name) # get :: BinHandle -> IO Name #
Outputable Name |
Instance details Defined in GHC.Types.Name Methods ppr :: Name -> SDoc #
OutputableBndr Name |
Instance details Defined in GHC.Types.Name Methods pprBndr :: BindingSite -> Name -> SDoc # pprPrefixOcc :: Name -> SDoc # pprInfixOcc :: Name -> SDoc # bndrIsJoin_maybe :: Name -> Maybe Int #
Eq Name | The same comments as for `Name`'s `Ord` instance apply.
Instance details Defined in GHC.Types.Name Methods (==) :: Name -> Name -> Bool # (/=) :: Name -> Name -> Bool #
Ord Name | Caution: This instance is implemented via `nonDetCmpUnique`, which means that the ordering is not stable across deserialization or rebuilds. See `nonDetCmpUnique` for further information, and trac #15240 for a bug caused by improper use of this instance.
Instance details Defined in GHC.Types.Name Methods compare :: Name -> Name -> Ordering # (<) :: Name -> Name -> Bool # (<=) :: Name -> Name -> Bool # (>) :: Name -> Name -> Bool # (>=) :: Name -> Name -> Bool # max :: Name -> Name -> Name # min :: Name -> Name -> Name #
ToHie (LBooleanFormula (LocatedN Name)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LBooleanFormula (LocatedN Name) -> HieM [HieAST Type]
ToHie (Context (Located Name)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (Located Name) -> HieM [HieAST Type]
NFData (UniqFM Name [Name]) # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: UniqFM Name [Name] -> () #
type Anno Name |
Instance details Defined in GHC.Hs.Extension type Anno Name = SrcSpanAnnN
type Anno (LocatedN Name) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Name) = SrcSpan
type Anno [LocatedN Name] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Name] = SrcSpan

class HasOccName name where #

Other names in the compiler add additional information to an OccName. This class provides a consistent way to access the underlying OccName.

Methods

occName :: name -> OccName #

#### Instances

Instances details

HasOccName IfaceClassOp |
Instance details Defined in GHC.Iface.Syntax Methods occName :: IfaceClassOp -> OccName #
HasOccName IfaceConDecl |
Instance details Defined in GHC.Iface.Syntax Methods occName :: IfaceConDecl -> OccName #
HasOccName IfaceDecl |
Instance details Defined in GHC.Iface.Syntax Methods occName :: IfaceDecl -> OccName #
HasOccName HoleFitCandidate |
Instance details Defined in GHC.Tc.Errors.Hole.FitTypes Methods occName :: HoleFitCandidate -> OccName #
HasOccName TcBinder |
Instance details Defined in GHC.Tc.Types.BasicTypes Methods occName :: TcBinder -> OccName #
HasOccName FieldLabel |
Instance details Defined in GHC.Types.FieldLabel Methods occName :: FieldLabel -> OccName #
HasOccName Name |
Instance details Defined in GHC.Types.Name Methods occName :: Name -> OccName #
HasOccName OccName |
Instance details Defined in GHC.Types.Name.Occurrence Methods occName :: OccName -> OccName #
HasOccName RdrName |
Instance details Defined in GHC.Types.Name.Reader Methods occName :: RdrName -> OccName #
HasOccName Var |
Instance details Defined in GHC.Types.Var Methods occName :: Var -> OccName #
HasOccName (GlobalRdrEltX info) |
Instance details Defined in GHC.Types.Name.Reader Methods occName :: GlobalRdrEltX info -> OccName #

data OccName #

Occurrence Name

In this context that means: "classified (i.e. as a type name, value name, etc) but not qualified and not yet resolved"

#### Instances

Instances details

Data OccName |

Instance details

Defined in GHC.Types.Name.Occurrence

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OccName -> c OccName #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OccName #

toConstr :: OccName -> Constr #

dataTypeOf :: OccName -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c OccName) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OccName) #

gmapT :: (forall b. Data b => b -> b) -> OccName -> OccName #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OccName -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OccName -> r #

gmapQ :: (forall d. Data d => d -> u) -> OccName -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> OccName -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> OccName -> m OccName #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OccName -> m OccName #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OccName -> m OccName #

Show OccName # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> OccName -> ShowS # show :: OccName -> String # showList :: [OccName] -> ShowS #
NFData OccName |
Instance details Defined in GHC.Types.Name.Occurrence Methods rnf :: OccName -> () #
HasOccName OccName |
Instance details Defined in GHC.Types.Name.Occurrence Methods occName :: OccName -> OccName #
Binary OccName |
Instance details Defined in GHC.Types.Name.Occurrence Methods put_ :: BinHandle -> OccName -> IO () # put :: BinHandle -> OccName -> IO (Bin OccName) # get :: BinHandle -> IO OccName #
Outputable OccName |
Instance details Defined in GHC.Types.Name.Occurrence Methods ppr :: OccName -> SDoc #
OutputableBndr OccName |
Instance details Defined in GHC.Types.Name.Occurrence Methods pprBndr :: BindingSite -> OccName -> SDoc # pprPrefixOcc :: OccName -> SDoc # pprInfixOcc :: OccName -> SDoc # bndrIsJoin_maybe :: OccName -> Maybe Int #
Eq OccName |
Instance details Defined in GHC.Types.Name.Occurrence Methods (==) :: OccName -> OccName -> Bool # (/=) :: OccName -> OccName -> Bool #
Ord OccName |
Instance details Defined in GHC.Types.Name.Occurrence Methods compare :: OccName -> OccName -> Ordering # (<) :: OccName -> OccName -> Bool # (<=) :: OccName -> OccName -> Bool # (>) :: OccName -> OccName -> Bool # (>=) :: OccName -> OccName -> Bool # max :: OccName -> OccName -> OccName # min :: OccName -> OccName -> OccName #
Hashable OccName # |
Instance details Defined in Development.IDE.GHC.Orphans Methods hashWithSalt :: Int -> OccName -> Int # hash :: OccName -> Int #

mkVarOccFS :: FastString -> OccName #

class NamedThing a where #

A class allowing convenient access to the `Name` of various datatypes

Minimal complete definition

getName

Methods

getOccName :: a -> OccName #

getName :: a -> Name #

#### Instances

Instances details

NamedThing Class |
Instance details Defined in GHC.Core.Class Methods getOccName :: Class -> OccName # getName :: Class -> Name #
NamedThing ConLike |
Instance details Defined in GHC.Core.ConLike Methods getOccName :: ConLike -> OccName # getName :: ConLike -> Name #
NamedThing DataCon |
Instance details Defined in GHC.Core.DataCon Methods getOccName :: DataCon -> OccName # getName :: DataCon -> Name #
NamedThing FamInst |
Instance details Defined in GHC.Core.FamInstEnv Methods getOccName :: FamInst -> OccName # getName :: FamInst -> Name #
NamedThing ClsInst |
Instance details Defined in GHC.Core.InstEnv Methods getOccName :: ClsInst -> OccName # getName :: ClsInst -> Name #
NamedThing PatSyn |
Instance details Defined in GHC.Core.PatSyn Methods getOccName :: PatSyn -> OccName # getName :: PatSyn -> Name #
NamedThing TyCon |
Instance details Defined in GHC.Core.TyCon Methods getOccName :: TyCon -> OccName # getName :: TyCon -> Name #
NamedThing IfaceClassOp |
Instance details Defined in GHC.Iface.Syntax Methods getOccName :: IfaceClassOp -> OccName # getName :: IfaceClassOp -> Name #
NamedThing IfaceConDecl |
Instance details Defined in GHC.Iface.Syntax Methods getOccName :: IfaceConDecl -> OccName # getName :: IfaceConDecl -> Name #
NamedThing IfaceDecl |
Instance details Defined in GHC.Iface.Syntax Methods getOccName :: IfaceDecl -> OccName # getName :: IfaceDecl -> Name #
NamedThing HoleFitCandidate |
Instance details Defined in GHC.Tc.Errors.Hole.FitTypes Methods getOccName :: HoleFitCandidate -> OccName # getName :: HoleFitCandidate -> Name #
NamedThing InvalidFamInstQTv |
Instance details Defined in GHC.Tc.Errors.Types Methods getOccName :: InvalidFamInstQTv -> OccName # getName :: InvalidFamInstQTv -> Name #
NamedThing Name |
Instance details Defined in GHC.Types.Name Methods getOccName :: Name -> OccName # getName :: Name -> Name #
NamedThing TyThing |
Instance details Defined in GHC.Types.TyThing Methods getOccName :: TyThing -> OccName # getName :: TyThing -> Name #
NamedThing Var |
Instance details Defined in GHC.Types.Var Methods getOccName :: Var -> OccName # getName :: Var -> Name #
NamedThing (CoAxiom br) |
Instance details Defined in GHC.Core.Coercion.Axiom Methods getOccName :: CoAxiom br -> OccName # getName :: CoAxiom br -> Name #
NamedThing e => NamedThing (Located e) |
Instance details Defined in GHC.Types.Name Methods getOccName :: Located e -> OccName # getName :: Located e -> Name #
NamedThing (Located a) => NamedThing (LocatedAn an a) |
Instance details Defined in GHC.Parser.Annotation Methods getOccName :: LocatedAn an a -> OccName # getName :: LocatedAn an a -> Name #
NamedThing tv => NamedThing (VarBndr tv flag) |
Instance details Defined in GHC.Types.Var Methods getOccName :: VarBndr tv flag -> OccName # getName :: VarBndr tv flag -> Name #

isFieldName :: Name -> Bool #

tidyNameOcc :: Name -> OccName -> Name #

nameOccName :: Name -> OccName #

setNameUnique :: Name -> Unique -> Name #

nameUnique :: Name -> Unique #

type FastStringEnv a = UniqFM FastString a #

A non-deterministic set of FastStrings. See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM for explanation why it's not deterministic and why it matters. Use DFastStringEnv if the set eventually gets converted into a list or folded over in a way where the order changes the generated code.

emptyFsEnv :: FastStringEnv a #

extendFsEnv :: FastStringEnv a -> FastString -> a -> FastStringEnv a #

lookupFsEnv :: FastStringEnv a -> FastString -> Maybe a #

mkFsEnv :: [(FastString, a)] -> FastStringEnv a #

type TidyOccEnv = UniqFM FastString Int #

type OccSet = FastStringEnv (UniqSet NameSpace) #

data OccEnv a #

A map keyed on `OccName`. See Note [OccEnv].

#### Instances

Instances details

Functor OccEnv |
Instance details Defined in GHC.Types.Name.Occurrence Methods fmap :: (a -> b) -> OccEnv a -> OccEnv b # (<$) :: a -> OccEnv b -> OccEnv a #
NFData a => NFData (OccEnv a) |
Instance details Defined in GHC.Types.Name.Occurrence Methods rnf :: OccEnv a -> () #
Outputable a => Outputable (OccEnv a) |
Instance details Defined in GHC.Types.Name.Occurrence Methods ppr :: OccEnv a -> SDoc #

data NameSpace #

#### Instances

Instances details

NFData NameSpace |
Instance details Defined in GHC.Types.Name.Occurrence Methods rnf :: NameSpace -> () #
Uniquable NameSpace |
Instance details Defined in GHC.Types.Name.Occurrence Methods getUnique :: NameSpace -> Unique #
Binary NameSpace |
Instance details Defined in GHC.Types.Name.Occurrence Methods put_ :: BinHandle -> NameSpace -> IO () # put :: BinHandle -> NameSpace -> IO (Bin NameSpace) # get :: BinHandle -> IO NameSpace #
Eq NameSpace |
Instance details Defined in GHC.Types.Name.Occurrence Methods (==) :: NameSpace -> NameSpace -> Bool # (/=) :: NameSpace -> NameSpace -> Bool #
Ord NameSpace |
Instance details Defined in GHC.Types.Name.Occurrence Methods compare :: NameSpace -> NameSpace -> Ordering # (<) :: NameSpace -> NameSpace -> Bool # (<=) :: NameSpace -> NameSpace -> Bool # (>) :: NameSpace -> NameSpace -> Bool # (>=) :: NameSpace -> NameSpace -> Bool # max :: NameSpace -> NameSpace -> NameSpace # min :: NameSpace -> NameSpace -> NameSpace #

tcName :: NameSpace #

clsName :: NameSpace #

tcClsName :: NameSpace #

dataName :: NameSpace #

srcDataName :: NameSpace #

tvName :: NameSpace #

fieldName :: FastString -> NameSpace #

isDataConNameSpace :: NameSpace -> Bool #

isTcClsNameSpace :: NameSpace -> Bool #

isTvNameSpace :: NameSpace -> Bool #

isVarNameSpace :: NameSpace -> Bool #

isTermVarOrFieldNameSpace :: NameSpace -> Bool #

Is this a term variable or field name namespace?

isValNameSpace :: NameSpace -> Bool #

isFieldNameSpace :: NameSpace -> Bool #

pprNameSpace :: NameSpace -> SDoc #

pprNonVarNameSpace :: NameSpace -> SDoc #

pprNameSpaceBrief :: NameSpace -> SDoc #

pprOccName :: IsLine doc => OccName -> doc #

occNameMangledFS :: OccName -> FastString #

Mangle field names to avoid duplicate symbols.

See Note [Mangling OccNames].

mkOccName :: NameSpace -> String -> OccName #

mkOccNameFS :: NameSpace -> FastString -> OccName #

mkVarOcc :: String -> OccName #

mkRecFieldOcc :: FastString -> String -> OccName #

mkRecFieldOccFS :: FastString -> FastString -> OccName #

varToRecFieldOcc :: HasDebugCallStack => FastString -> OccName -> OccName #

recFieldToVarOcc :: HasDebugCallStack => OccName -> OccName #

mkDataOcc :: String -> OccName #

mkDataOccFS :: FastString -> OccName #

mkTyVarOcc :: String -> OccName #

mkTyVarOccFS :: FastString -> OccName #

mkTcOcc :: String -> OccName #

mkTcOccFS :: FastString -> OccName #

mkClsOcc :: String -> OccName #

mkClsOccFS :: FastString -> OccName #

demoteOccName :: OccName -> Maybe OccName #

demoteOccTvName :: OccName -> Maybe OccName #

promoteOccName :: OccName -> Maybe OccName #

emptyOccEnv :: OccEnv a #

The empty `OccEnv`.

unitOccEnv :: OccName -> a -> OccEnv a #

A singleton `OccEnv`.

extendOccEnv :: OccEnv a -> OccName -> a -> OccEnv a #

Add a single element to an `OccEnv`.

extendOccEnvList :: OccEnv a -> [(OccName, a)] -> OccEnv a #

Extend an `OccEnv` by a list.

`OccName`s later on in the list override earlier `OccName`s.

lookupOccEnv :: OccEnv a -> OccName -> Maybe a #

Look an element up in an `OccEnv`.

lookupOccEnv_AllNameSpaces :: OccEnv a -> OccName -> [a] #

Lookup an element in an `OccEnv`, ignoring `NameSpace`s entirely.

lookupOccEnv_WithFields :: OccEnv a -> OccName -> [a] #

Lookup an element in an `OccEnv`, looking in the record field namespace for a variable.

lookupFieldsOccEnv :: OccEnv a -> FastString -> [a] #

Look up all the record fields that match with the given `FastString` in an `OccEnv`.

mkOccEnv :: [(OccName, a)] -> OccEnv a #

Create an `OccEnv` from a list.

`OccName`s later on in the list override earlier `OccName`s.

mkOccEnv_C #

Arguments

:: (a -> a -> a) | old -> new -> result
-> [(OccName, a)] |
-> OccEnv a |

Create an `OccEnv` from a list, combining different values with the same `OccName` using the combining function.

elemOccEnv :: OccName -> OccEnv a -> Bool #

Compute whether there is a value keyed by the given `OccName`.

nonDetFoldOccEnv :: (a -> b -> b) -> b -> OccEnv a -> b #

Fold over an `OccEnv`. Non-deterministic, unless the folding function is commutative (i.e. `a1 `f` ( a2 `f` b ) == a2 `f` ( a1 `f` b )` for all `a1`, `a2`, `b`).

nonDetOccEnvElts :: OccEnv a -> [a] #

Obtain the elements of an `OccEnv`.

The resulting order is non-deterministic.

plusOccEnv :: OccEnv a -> OccEnv a -> OccEnv a #

Union of two `OccEnv`s, right-biased.

plusOccEnv_C :: (a -> a -> a) -> OccEnv a -> OccEnv a -> OccEnv a #

Union of two `OccEnv`s with a combining function.

mapOccEnv :: (a -> b) -> OccEnv a -> OccEnv b #

Map over an `OccEnv` (`Functor` instance).

mapMaybeOccEnv :: (a -> Maybe b) -> OccEnv a -> OccEnv b #

`mapMaybe` for b `OccEnv`.

extendOccEnv_Acc #

Arguments

:: (a -> b -> b) | add to existing
-> (a -> b) | new element
-> OccEnv b | old
-> OccName |
-> a | new
-> OccEnv b |

Add a single element to an `OccEnv`, using a different function whether the `OccName` already exists or not.

delFromOccEnv :: OccEnv a -> OccName -> OccEnv a #

Delete one element from an `OccEnv`.

delListFromOccEnv :: OccEnv a -> [OccName] -> OccEnv a #

Delete multiple elements from an `OccEnv`.

filterOccEnv :: (a -> Bool) -> OccEnv a -> OccEnv a #

Filter out all elements in an `OccEnv` using a predicate.

alterOccEnv :: (Maybe a -> Maybe a) -> OccEnv a -> OccName -> OccEnv a #

Alter an `OccEnv`, adding or removing an element at the given key.

intersectOccEnv_C :: (a -> b -> c) -> OccEnv a -> OccEnv b -> OccEnv c #

minusOccEnv :: OccEnv a -> OccEnv b -> OccEnv a #

Remove elements of the first `OccEnv` that appear in the second `OccEnv`.

minusOccEnv_C :: (a -> b -> Maybe a) -> OccEnv a -> OccEnv b -> OccEnv a #

Alters (replaces or removes) those elements of the first `OccEnv` that are mentioned in the second `OccEnv`.

Same idea as `differenceWith`.

minusOccEnv_C_Ns :: (UniqFM NameSpace a -> UniqFM NameSpace b -> UniqFM NameSpace a) -> OccEnv a -> OccEnv b -> OccEnv a #

pprOccEnv :: (a -> SDoc) -> OccEnv a -> SDoc #

strictMapOccEnv :: (a -> b) -> OccEnv a -> OccEnv b #

Map over an `OccEnv` strictly.

forceOccEnv :: (a -> ()) -> OccEnv a -> () #

Force an `OccEnv` with the provided function.

emptyOccSet :: OccSet #

unitOccSet :: OccName -> OccSet #

mkOccSet :: [OccName] -> OccSet #

extendOccSet :: OccSet -> OccName -> OccSet #

extendOccSetList :: OccSet -> [OccName] -> OccSet #

unionOccSets :: OccSet -> OccSet -> OccSet #

unionManyOccSets :: [OccSet] -> OccSet #

elemOccSet :: OccName -> OccSet -> Bool #

isEmptyOccSet :: OccSet -> Bool #

occNameString :: OccName -> String #

setOccNameSpace :: NameSpace -> OccName -> OccName #

isVarOcc :: OccName -> Bool #

isTvOcc :: OccName -> Bool #

isTcOcc :: OccName -> Bool #

isFieldOcc :: OccName -> Bool #

fieldOcc_maybe :: OccName -> Maybe FastString #

isValOcc :: OccName -> Bool #

Value `OccNames`s are those that are either in the variable, field name or data constructor namespaces

isDataOcc :: OccName -> Bool #

isDataSymOcc :: OccName -> Bool #

Test if the `OccName` is a data constructor that starts with a symbol (e.g. `:`, or `[]`)

isSymOcc :: OccName -> Bool #

Test if the `OccName` is that for any operator (whether it is a data constructor or variable or whatever)

parenSymOcc :: OccName -> SDoc -> SDoc #

Wrap parens around an operator

startsWithUnderscore :: OccName -> Bool #

Haskell 98 encourages compilers to suppress warnings about unused names in a pattern if they start with `_`: this implements that test

isDerivedOccName :: OccName -> Bool #

Test for definitions internally generated by GHC. This predicate is used to suppress printing of internal definitions in some debug prints

isDefaultMethodOcc :: OccName -> Bool #

isTypeableBindOcc :: OccName -> Bool #

Is an `OccName` one of a Typeable `TyCon` or `Module` binding? This is needed as these bindings are renamed differently. See Note [Grand plan for Typeable] in GHC.Tc.Instance.Typeable.

mkDataConWrapperOcc :: OccName -> OccName #

mkWorkerOcc :: OccName -> OccName #

mkMatcherOcc :: OccName -> OccName #

mkBuilderOcc :: OccName -> OccName #

mkDefaultMethodOcc :: OccName -> OccName #

mkClassOpAuxOcc :: OccName -> OccName #

mkDictOcc :: OccName -> OccName #

mkIPOcc :: OccName -> OccName #

mkSpecOcc :: OccName -> OccName #

mkForeignExportOcc :: OccName -> OccName #

mkRepEqOcc :: OccName -> OccName #

mkClassDataConOcc :: OccName -> OccName #

mkNewTyCoOcc :: OccName -> OccName #

mkInstTyCoOcc :: OccName -> OccName #

mkEqPredCoOcc :: OccName -> OccName #

mkCon2TagOcc :: OccName -> OccName #

mkTag2ConOcc :: OccName -> OccName #

mkMaxTagOcc :: OccName -> OccName #

mkDataTOcc :: OccName -> OccName #

mkDataCOcc :: OccName -> OccName #

mkTyConRepOcc :: OccName -> OccName #

mkGenR :: OccName -> OccName #

mkGen1R :: OccName -> OccName #

mkDataConWorkerOcc :: OccName -> OccName #

mkSuperDictAuxOcc :: Int -> OccName -> OccName #

mkSuperDictSelOcc #

Arguments

:: Int | Index of superclass, e.g. 3
-> OccName | Class, e.g. `Ord`
-> OccName | Derived `Occname`, e.g. `$p3Ord`

mkLocalOcc #

Arguments

:: Unique | Unique to combine with the `OccName`
-> OccName | Local name, e.g. `sat`
-> OccName | Nice unique version, e.g. `$L23sat`

mkInstTyTcOcc #

Arguments

:: String | Family name, e.g. `Map`
-> OccSet | avoid these Occs

-> OccName

    R:Map

Derive a name for the representation type constructor of a `data`/`newtype` instance.

mkDFunOcc #

Arguments

:: String | Typically the class and type glommed together e.g. `OrdMaybe`. Only used in debug mode, for extra clarity
-> Bool | Is this a hs-boot instance DFun?
-> OccSet | avoid these Occs
-> OccName | E.g. `$f3OrdMaybe`

mkMethodOcc :: OccName -> OccName #

emptyTidyOccEnv :: TidyOccEnv #

initTidyOccEnv :: [OccName] -> TidyOccEnv #

delTidyOccEnvList :: TidyOccEnv -> [FastString] -> TidyOccEnv #

avoidClashesOccEnv :: TidyOccEnv -> [OccName] -> TidyOccEnv #

tidyOccName :: TidyOccEnv -> OccName -> (TidyOccEnv, OccName) #

mainOcc :: OccName #

ppMainFn :: OccName -> SDoc #

data BuiltInSyntax #

BuiltInSyntax is for things like `(:)`, `[]` and tuples, which have special syntactic forms. They aren't in scope as such.

Constructors

BuiltInSyntax |
UserSyntax |

nameNameSpace :: Name -> NameSpace #

nameSrcLoc :: Name -> SrcLoc #

nameSrcSpan :: Name -> SrcSpan #

isWiredInName :: Name -> Bool #

isWiredIn :: NamedThing thing => thing -> Bool #

wiredInNameTyThing_maybe :: Name -> Maybe TyThing #

isBuiltInSyntax :: Name -> Bool #

isTupleTyConName :: Name -> Bool #

isExternalName :: Name -> Bool #

isInternalName :: Name -> Bool #

isHoleName :: Name -> Bool #

isDynLinkName :: Platform -> Module -> Name -> Bool #

Will the `Name` come from a dynamically linked package?

nameModule :: HasDebugCallStack => Name -> Module #

nameModule_maybe :: Name -> Maybe Module #

namePun_maybe :: Name -> Maybe FastString #

nameIsLocalOrFrom :: Module -> Name -> Bool #

Returns True if the name is (a) Internal (b) External but from the specified module (c) External but from the `interactive` package

The key idea is that False means: the entity is defined in some other module you can find the details (type, fixity, instances) in some interface file those details will be stored in the EPT or HPT

True means: the entity is defined in this module or earlier in the GHCi session you can find details (type, fixity, instances) in the TcGblEnv or TcLclEnv

The isInteractiveModule part is because successive interactions of a GHCi session each give rise to a fresh module (Ghci1, Ghci2, etc), but they all come from the magic `interactive` package; and all the details are kept in the TcLclEnv, TcGblEnv, NOT in the HPT or EPT. See Note [The interactive package] in GHC.Runtime.Context

nameIsExternalOrFrom :: Module -> Name -> Bool #

Returns True if the name is external or from the `interactive` package See documentation of `nameIsLocalOrFrom` function

nameIsHomePackage :: Module -> Name -> Bool #

nameIsHomePackageImport :: Module -> Name -> Bool #

nameIsFromExternalPackage :: HomeUnit -> Name -> Bool #

Returns True if the Name comes from some other package: neither this package nor the interactive package.

isTyVarName :: Name -> Bool #

isTyConName :: Name -> Bool #

isDataConName :: Name -> Bool #

isValName :: Name -> Bool #

isVarName :: Name -> Bool #

isSystemName :: Name -> Bool #

mkInternalName :: Unique -> OccName -> SrcSpan -> Name #

Create a name which is (for now at least) local to the current module and hence does not need a `Module` to disambiguate it from other `Name`s

mkClonedInternalName :: Unique -> Name -> Name #

mkDerivedInternalName :: (OccName -> OccName) -> Unique -> Name -> Name #

mkExternalName :: Unique -> Module -> OccName -> SrcSpan -> Name #

Create a name which definitely originates in the given module

mkWiredInName :: Module -> OccName -> Unique -> TyThing -> BuiltInSyntax -> Name #

Create a name which is actually defined by the compiler itself

mkSystemName :: Unique -> OccName -> Name #

Create a name brought into being by the compiler

mkSystemNameAt :: Unique -> OccName -> SrcSpan -> Name #

mkSystemVarName :: Unique -> FastString -> Name #

mkSysTvName :: Unique -> FastString -> Name #

mkFCallName :: Unique -> FastString -> Name #

Make a name for a foreign call

setNameLoc :: Name -> SrcSpan -> Name #

localiseName :: Name -> Name #

Make the `Name` into an internal name, regardless of what it was to begin with

stableNameCmp :: Name -> Name -> Ordering #

Compare Names lexicographically This only works for Names that originate in the source code or have been tidied.

pprName :: IsLine doc => Name -> doc #

pprFullName :: Module -> Name -> SDoc #

Print fully qualified name (with unit-id, module and unique)

pprTickyName :: Module -> Name -> SDoc #

Print a ticky ticky styled name

Module argument is the module to use for internal and system names. When printing the name in a ticky profile, the module name is included even for local things. However, ticky uses the format "x (M)" rather than "M.x". Hence, this function provides a separation from normal styling.

pprNameUnqualified :: Name -> SDoc #

Print the string of Name unqualifiedly directly.

pprModulePrefix :: PprStyle -> Module -> OccName -> SDoc #

pprDefinedAt :: Name -> SDoc #

pprNameDefnLoc :: Name -> SDoc #

nameStableString :: Name -> String #

Get a string representation of a `Name` that's unique and stable across recompilations. Used for deterministic generation of binds for derived instances. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal$String"

getSrcLoc :: NamedThing a => a -> SrcLoc #

getSrcSpan :: NamedThing a => a -> SrcSpan #

getOccString :: NamedThing a => a -> String #

getOccFS :: NamedThing a => a -> FastString #

pprInfixName :: (Outputable a, NamedThing a) => a -> SDoc #

pprPrefixName :: NamedThing a => a -> SDoc #

module GHC.Types.Name.Set

module GHC.Types.Name.Cache

module GHC.Types.Name.Env

data RdrName #

Reader Name

Do not use the data constructors of RdrName directly: prefer the family of functions that creates them, such as `mkRdrUnqual`

- Note: A Located RdrName will only have API Annotations if it is a compound one, e.g.

    `bar`
    ( ~ )

- `AnnKeywordId` : `AnnType`, `AnnOpen` `'('` or `'['` or `'[:'`, `AnnClose` `')'` or `']'` or `':]'`,, `AnnBackquote` `'`'`, `AnnVal` `AnnTilde`,

Constructors

Unqual OccName | Unqualified name Used for ordinary, unqualified occurrences, e.g. `x`, `y` or `Foo`. Create such a `RdrName` with `mkRdrUnqual`
Qual ModuleName OccName | Qualified name A qualified name written by the user in source code. The module isn't necessarily the module where the thing is defined; just the one from which it is imported. Examples are `Bar.x`, `Bar.y` or `Bar.Foo`. Create such a `RdrName` with `mkRdrQual`
Orig Module OccName | Original name An original name; the module is the defining module. This is used when GHC generates code that will be fed into the renamer (e.g. from deriving clauses), but where we want to say "Use Prelude.map dammit". One of these can be created with `mkOrig`

Exact Name

Exact name

We know exactly the `Name`. This is used:

1. When the parser parses built-in syntax like `[]` and `(,)`, but wants a `RdrName` from it
2. By Template Haskell, when TH has generated a unique name

Such a `RdrName` can be created by using `getRdrName` on a `Name`

#### Instances

Instances details

Data RdrName |

Instance details

Defined in GHC.Types.Name.Reader

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RdrName -> c RdrName #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RdrName #

toConstr :: RdrName -> Constr #

dataTypeOf :: RdrName -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RdrName) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RdrName) #

gmapT :: (forall b. Data b => b -> b) -> RdrName -> RdrName #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RdrName -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RdrName -> r #

gmapQ :: (forall d. Data d => d -> u) -> RdrName -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> RdrName -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> RdrName -> m RdrName #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RdrName -> m RdrName #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RdrName -> m RdrName #

DisambInfixOp RdrName |
Instance details Defined in GHC.Parser.PostProcess Methods mkHsVarOpPV :: LocatedN RdrName -> PV (LocatedN RdrName) # mkHsConOpPV :: LocatedN RdrName -> PV (LocatedN RdrName) # mkHsInfixHolePV :: SrcSpan -> (EpAnnComments -> EpAnn EpAnnUnboundVar) -> PV (Located RdrName) #
HasOccName RdrName |
Instance details Defined in GHC.Types.Name.Reader Methods occName :: RdrName -> OccName #
Outputable RdrName |
Instance details Defined in GHC.Types.Name.Reader Methods ppr :: RdrName -> SDoc #
OutputableBndr RdrName |
Instance details Defined in GHC.Types.Name.Reader Methods pprBndr :: BindingSite -> RdrName -> SDoc # pprPrefixOcc :: RdrName -> SDoc # pprInfixOcc :: RdrName -> SDoc # bndrIsJoin_maybe :: RdrName -> Maybe Int #
Eq RdrName |
Instance details Defined in GHC.Types.Name.Reader Methods (==) :: RdrName -> RdrName -> Bool # (/=) :: RdrName -> RdrName -> Bool #
Ord RdrName |
Instance details Defined in GHC.Types.Name.Reader Methods compare :: RdrName -> RdrName -> Ordering # (<) :: RdrName -> RdrName -> Bool # (<=) :: RdrName -> RdrName -> Bool # (>) :: RdrName -> RdrName -> Bool # (>=) :: RdrName -> RdrName -> Bool # max :: RdrName -> RdrName -> RdrName # min :: RdrName -> RdrName -> RdrName #
type Anno RdrName |
Instance details Defined in GHC.Hs.Extension type Anno RdrName = SrcSpanAnnN
type Anno (LocatedN RdrName) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN RdrName) = SrcSpan
type Anno [LocatedN RdrName] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN RdrName] = SrcSpan

data RecFieldInfo #

Constructors

RecFieldInfo |

Fields

- recFieldLabel :: !FieldLabel
- recFieldCons :: !(UniqSet ConLikeName)

  The constructors which have this field label. Always non-empty.

  NB: these constructors will always share a single parent, as the field label disambiguates between parents in the presence of duplicate record fields.

#### Instances

Instances details

Data RecFieldInfo |

Instance details

Defined in GHC.Types.GREInfo

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RecFieldInfo -> c RecFieldInfo #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RecFieldInfo #

toConstr :: RecFieldInfo -> Constr #

dataTypeOf :: RecFieldInfo -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RecFieldInfo) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RecFieldInfo) #

gmapT :: (forall b. Data b => b -> b) -> RecFieldInfo -> RecFieldInfo #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RecFieldInfo -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RecFieldInfo -> r #

gmapQ :: (forall d. Data d => d -> u) -> RecFieldInfo -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> RecFieldInfo -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> RecFieldInfo -> m RecFieldInfo #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RecFieldInfo -> m RecFieldInfo #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RecFieldInfo -> m RecFieldInfo #

NFData RecFieldInfo |
Instance details Defined in GHC.Types.GREInfo Methods rnf :: RecFieldInfo -> () #
Outputable RecFieldInfo |
Instance details Defined in GHC.Types.GREInfo Methods ppr :: RecFieldInfo -> SDoc #
Eq RecFieldInfo |
Instance details Defined in GHC.Types.GREInfo Methods (==) :: RecFieldInfo -> RecFieldInfo -> Bool # (/=) :: RecFieldInfo -> RecFieldInfo -> Bool #
ToHie (IEContext (Located RecFieldInfo)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (Located RecFieldInfo) -> HieM [HieAST Type]

data ConLikeName #

The `Name` of a `ConLike`.

Useful when we are in the renamer and don't yet have a full `DataCon` or `PatSyn` to hand.

Constructors

DataConName |

Fields

- conLikeName_Name :: !Name

PatSynName |

Fields

- conLikeName_Name :: !Name

#### Instances

Instances details

Data ConLikeName |

Instance details

Defined in GHC.Types.GREInfo

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ConLikeName -> c ConLikeName #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ConLikeName #

toConstr :: ConLikeName -> Constr #

dataTypeOf :: ConLikeName -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ConLikeName) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ConLikeName) #

gmapT :: (forall b. Data b => b -> b) -> ConLikeName -> ConLikeName #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ConLikeName -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ConLikeName -> r #

gmapQ :: (forall d. Data d => d -> u) -> ConLikeName -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ConLikeName -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ConLikeName -> m ConLikeName #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ConLikeName -> m ConLikeName #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ConLikeName -> m ConLikeName #

NFData ConLikeName |
Instance details Defined in GHC.Types.GREInfo Methods rnf :: ConLikeName -> () #
Uniquable ConLikeName |
Instance details Defined in GHC.Types.GREInfo Methods getUnique :: ConLikeName -> Unique #
Outputable ConLikeName |
Instance details Defined in GHC.Types.GREInfo Methods ppr :: ConLikeName -> SDoc #
Eq ConLikeName |
Instance details Defined in GHC.Types.GREInfo Methods (==) :: ConLikeName -> ConLikeName -> Bool # (/=) :: ConLikeName -> ConLikeName -> Bool #

data GREInfo #

Information about a `Name` that is pertinent to the renamer.

See Note [GREInfo]

Constructors

Vanilla | No particular information... e.g. a function
UnboundGRE | An unbound GRE... could be anything
IAmTyCon !(TyConFlavour Name) | `TyCon`
IAmConLike | `ConLike`

Fields

- !ConInfo

  The constructor fields. See Note [Local constructor info in the renamer]. | Record field

IAmRecField !RecFieldInfo |

#### Instances

Instances details

Data GREInfo |

Instance details

Defined in GHC.Types.GREInfo

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GREInfo -> c GREInfo #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c GREInfo #

toConstr :: GREInfo -> Constr #

dataTypeOf :: GREInfo -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c GREInfo) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c GREInfo) #

gmapT :: (forall b. Data b => b -> b) -> GREInfo -> GREInfo #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GREInfo -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GREInfo -> r #

gmapQ :: (forall d. Data d => d -> u) -> GREInfo -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> GREInfo -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> GREInfo -> m GREInfo #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GREInfo -> m GREInfo #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GREInfo -> m GREInfo #

NFData GREInfo |
Instance details Defined in GHC.Types.GREInfo Methods rnf :: GREInfo -> () #
Outputable GREInfo |
Instance details Defined in GHC.Types.GREInfo Methods ppr :: GREInfo -> SDoc #

plusGREInfo :: GREInfo -> GREInfo -> GREInfo #

data ImpItemSpec #

Import Item Specification

Describes import info a particular Name

Constructors

ImpAll | The import had no import list, or had a hiding list

ImpSome

The import had an import list. The `is_explicit` field is `True` iff the thing was named explicitly in the import specs rather than being imported as part of a "..." group. Consider:

    import C( T(..) )

Here the constructors of `T` are not named explicitly; only `T` is named explicitly.

Fields

- is_explicit :: !Bool
- is_iloc :: !SrcSpan

#### Instances

Instances details

Data ImpItemSpec |

Instance details

Defined in GHC.Types.Name.Reader

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ImpItemSpec -> c ImpItemSpec #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ImpItemSpec #

toConstr :: ImpItemSpec -> Constr #

dataTypeOf :: ImpItemSpec -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ImpItemSpec) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ImpItemSpec) #

gmapT :: (forall b. Data b => b -> b) -> ImpItemSpec -> ImpItemSpec #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ImpItemSpec -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ImpItemSpec -> r #

gmapQ :: (forall d. Data d => d -> u) -> ImpItemSpec -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ImpItemSpec -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ImpItemSpec -> m ImpItemSpec #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ImpItemSpec -> m ImpItemSpec #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ImpItemSpec -> m ImpItemSpec #

Eq ImpItemSpec |
Instance details Defined in GHC.Types.Name.Reader Methods (==) :: ImpItemSpec -> ImpItemSpec -> Bool # (/=) :: ImpItemSpec -> ImpItemSpec -> Bool #

data ImpDeclSpec #

Import Declaration Specification

Describes a particular import declaration and is shared among all the `Provenance`s for that decl

Constructors

ImpDeclSpec |

Fields

- is_mod :: !Module

  Module imported, e.g. `import Muggle` Note the `Muggle` may well not be the defining module for this thing!

- is_as :: !ModuleName

  Import alias, e.g. from `as M` (or `Muggle` if there is no `as` clause)

- is_qual :: !Bool

  Was this import qualified?

- is_dloc :: !SrcSpan

  The location of the entire import declaration

#### Instances

Instances details

Data ImpDeclSpec |

Instance details

Defined in GHC.Types.Name.Reader

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ImpDeclSpec -> c ImpDeclSpec #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ImpDeclSpec #

toConstr :: ImpDeclSpec -> Constr #

dataTypeOf :: ImpDeclSpec -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ImpDeclSpec) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ImpDeclSpec) #

gmapT :: (forall b. Data b => b -> b) -> ImpDeclSpec -> ImpDeclSpec #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ImpDeclSpec -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ImpDeclSpec -> r #

gmapQ :: (forall d. Data d => d -> u) -> ImpDeclSpec -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ImpDeclSpec -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ImpDeclSpec -> m ImpDeclSpec #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ImpDeclSpec -> m ImpDeclSpec #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ImpDeclSpec -> m ImpDeclSpec #

Eq ImpDeclSpec |
Instance details Defined in GHC.Types.Name.Reader Methods (==) :: ImpDeclSpec -> ImpDeclSpec -> Bool # (/=) :: ImpDeclSpec -> ImpDeclSpec -> Bool #

data ImportSpec #

Import Specification

The `ImportSpec` of something says how it came to be imported It's quite elaborate so that we can give accurate unused-name warnings.

Constructors

ImpSpec |

Fields

- is_decl :: !ImpDeclSpec
- is_item :: !ImpItemSpec

#### Instances

Instances details

Data ImportSpec |

Instance details

Defined in GHC.Types.Name.Reader

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ImportSpec -> c ImportSpec #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ImportSpec #

toConstr :: ImportSpec -> Constr #

dataTypeOf :: ImportSpec -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ImportSpec) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ImportSpec) #

gmapT :: (forall b. Data b => b -> b) -> ImportSpec -> ImportSpec #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ImportSpec -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ImportSpec -> r #

gmapQ :: (forall d. Data d => d -> u) -> ImportSpec -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ImportSpec -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ImportSpec -> m ImportSpec #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ImportSpec -> m ImportSpec #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ImportSpec -> m ImportSpec #

NFData ImportSpec |
Instance details Defined in GHC.Types.Name.Reader Methods rnf :: ImportSpec -> () #
Outputable ImportSpec |
Instance details Defined in GHC.Types.Name.Reader Methods ppr :: ImportSpec -> SDoc #
Eq ImportSpec |
Instance details Defined in GHC.Types.Name.Reader Methods (==) :: ImportSpec -> ImportSpec -> Bool # (/=) :: ImportSpec -> ImportSpec -> Bool #

data LookupChild #

Constructors

LookupChild |

Fields

- wantedParent :: Name

  the parent we are looking up children of

- lookupDataConFirst :: Bool

  for type constructors, should we look in the data constructor namespace first?

- prioritiseParent :: Bool

  should we prioritise getting the right `Parent`?

  - `True`: prioritise getting the right `Parent`
  - `False`: prioritise getting the right `NameSpace`

  See Note [childGREPriority].

#### Instances

Instances details

Outputable LookupChild |
Instance details Defined in GHC.Types.Name.Reader Methods ppr :: LookupChild -> SDoc #

data WhichGREs info where #

How should we look up in a `GlobalRdrEnv`? Which `NameSpace`s are considered relevant for a given lookup?

Constructors

SameNameSpace :: forall info. WhichGREs info | Only consider `GlobalRdrElt`s with the exact `NameSpace` we look up.
RelevantGREs | Allow `GlobalRdrElt`s with different `NameSpace`s, e.g. allow looking up record fields from the variable `NameSpace`, or looking up a `TyCon` from the data constructor `NameSpace`.

Fields

- :: { includeFieldSelectors :: !FieldsOrSelectors

  how should we handle looking up variables?

  - should we include record fields defined with `-XNoFieldSelectors`?
  - should we include non-fields?

  See Note [NoFieldSelectors].

- , lookupVariablesForFields :: !Bool

  when looking up a record field, should we also look up plain variables?

- , lookupTyConsAsWell :: !Bool

  when looking up a variable, field or data constructor, should we also try the type constructor `NameSpace`?

- } -> WhichGREs GREInfo

Bundled Patterns

pattern RelevantGREsFOS :: FieldsOrSelectors -> WhichGREs GREInfo | Look up relevant GREs, taking into account the interaction between the variable and field `NameSpace`s as determined by the `FieldsOrSelector` argument.
pattern AllRelevantGREs :: WhichGREs GREInfo | Look up as many possibly relevant `GlobalRdrElt`s as possible.

#### Instances

Instances details

Outputable (WhichGREs info) |
Instance details Defined in GHC.Types.Name.Reader Methods ppr :: WhichGREs info -> SDoc #

data LookupGRE info where #

What should we look up in a `GlobalRdrEnv`? Should we only look up names with the exact same `OccName`, or do we allow different `NameSpace`s?

Depending on the answer, we might need more or less information from the `GlobalRdrEnv`, e.g. if we want to include matching record fields we need to know if the corresponding record fields define field selectors, for which we need to consult the `GREInfo`. This is why this datatype is a GADT.

See Note [IfGlobalRdrEnv].

Constructors

LookupOccName | Look for this specific `OccName`, with the exact same `NameSpace`, in the `GlobalRdrEnv`.

Fields

- :: forall info. OccName

  the `OccName` to look up

- -> WhichGREs info

  information about other relevant `NameSpace`s

- -> LookupGRE info

LookupRdrName | Look up the `OccName` of this `RdrName` in the `GlobalRdrEnv`, filtering out those whose qualification matches that of the `RdrName`. Lookup returns an empty result for `Exact` or `Orig` `RdrName`s.

Fields

- :: forall info. RdrName

  the `RdrName` to look up

- -> WhichGREs info

  information about other relevant `NameSpace`s

- -> LookupGRE info

LookupExactName | Look for `GRE`s with the same unique as the given `Name` in the `GlobalRdrEnv`.

Fields

- :: forall info. { lookupExactName :: Name

  the `Name` to look up

- , lookInAllNameSpaces :: Bool

  whether to look in *all* `NameSpace`s, or just in the `NameSpace` of the `Name` See Note [Template Haskell ambiguity]

- } -> LookupGRE info

LookupChildren | Look up children `GlobalRdrElt`s with a given `Parent`.

Fields

- :: forall info. OccName

  the `OccName` to look up

- -> LookupChild

  information to decide which `GlobalRdrElt`s are valid children after looking up

- -> LookupGRE info

data FieldsOrSelectors #

When looking up GREs, we may or may not want to include fields that were defined in modules with `NoFieldSelectors` enabled. See Note [NoFieldSelectors].

Constructors

WantNormal | Include normal names, and fields with selectors, but ignore fields without selectors.
WantBoth | Include normal names and all fields (regardless of whether they have selectors).
WantField | Include only fields, with or without selectors, ignoring any non-fields in scope.

#### Instances

Instances details

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

data Parent #

See Note [Parents]

Constructors

NoParent |
ParentIs |

Fields

- par_is :: !Name

#### Instances

Instances details

Data Parent |

Instance details

Defined in GHC.Types.Name.Reader

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Parent -> c Parent #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Parent #

toConstr :: Parent -> Constr #

dataTypeOf :: Parent -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Parent) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Parent) #

gmapT :: (forall b. Data b => b -> b) -> Parent -> Parent #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Parent -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Parent -> r #

gmapQ :: (forall d. Data d => d -> u) -> Parent -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Parent -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Parent -> m Parent #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Parent -> m Parent #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Parent -> m Parent #

NFData Parent |
Instance details Defined in GHC.Types.Name.Reader Methods rnf :: Parent -> () #
Outputable Parent |
Instance details Defined in GHC.Types.Name.Reader Methods ppr :: Parent -> SDoc #
Eq Parent |
Instance details Defined in GHC.Types.Name.Reader Methods (==) :: Parent -> Parent -> Bool # (/=) :: Parent -> Parent -> Bool #

type FieldGlobalRdrElt = GlobalRdrElt #

A `FieldGlobalRdrElt` is a `GlobalRdrElt` in which the `gre_info` field is `IAmRecField`.

data GlobalRdrEltX info #

Global Reader Element

Something in scope in the renamer; usually a member of the `GlobalRdrEnv`. See Note [GlobalRdrElt provenance].

Why do we parametrise over the `gre_info` field? See Note [IfGlobalRdrEnv].

#### Instances

Instances details

Data info => Data (GlobalRdrEltX info) |

Instance details

Defined in GHC.Types.Name.Reader

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GlobalRdrEltX info -> c (GlobalRdrEltX info) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (GlobalRdrEltX info) #

toConstr :: GlobalRdrEltX info -> Constr #

dataTypeOf :: GlobalRdrEltX info -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (GlobalRdrEltX info)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (GlobalRdrEltX info)) #

gmapT :: (forall b. Data b => b -> b) -> GlobalRdrEltX info -> GlobalRdrEltX info #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GlobalRdrEltX info -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GlobalRdrEltX info -> r #

gmapQ :: (forall d. Data d => d -> u) -> GlobalRdrEltX info -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> GlobalRdrEltX info -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> GlobalRdrEltX info -> m (GlobalRdrEltX info) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GlobalRdrEltX info -> m (GlobalRdrEltX info) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GlobalRdrEltX info -> m (GlobalRdrEltX info) #

NFData a => NFData (GlobalRdrEltX a) |
Instance details Defined in GHC.Types.Name.Reader Methods rnf :: GlobalRdrEltX a -> () #
HasOccName (GlobalRdrEltX info) |
Instance details Defined in GHC.Types.Name.Reader Methods occName :: GlobalRdrEltX info -> OccName #
Outputable info => Outputable (GlobalRdrEltX info) |
Instance details Defined in GHC.Types.Name.Reader Methods ppr :: GlobalRdrEltX info -> SDoc #

type IfGlobalRdrElt = GlobalRdrEltX () #

A `GlobalRdrElt` in which we stripped out the `GREInfo` field, in order to avoid space leaks.

See Note [IfGlobalRdrEnv].

type GlobalRdrElt = GlobalRdrEltX GREInfo #

Global Reader Element

Something in scope in the renamer; usually a member of the `GlobalRdrEnv`. See Note [GlobalRdrElt provenance].

type GlobalRdrEnvX info = OccEnv [GlobalRdrEltX info] #

Parametrises `GlobalRdrEnv` over the presence or absence of `GREInfo`.

See Note [IfGlobalRdrEnv].

type IfGlobalRdrEnv = GlobalRdrEnvX () #

A `GlobalRdrEnv` in which the `GlobalRdrElt`s don't have any `GREInfo` attached to them. This is useful to avoid space leaks, see Note [IfGlobalRdrEnv].

type GlobalRdrEnv = GlobalRdrEnvX GREInfo #

Global Reader Environment

Keyed by `OccName`; when looking up a qualified name we look up the `OccName` part, and then check the `Provenance` to see if the appropriate qualification is valid. This saves routinely doubling the size of the env by adding both qualified and unqualified names to the domain.

The list in the codomain is required because there may be name clashes These only get reported on lookup, not on construction

INVARIANT 1: All the members of the list have distinct `gre_name` fields; that is, no duplicate Names

INVARIANT 2: Imported provenance => Name is an ExternalName However LocalDefs can have an InternalName. This happens only when type-checking a [d| ... |] Template Haskell quotation; see this note in GHC.Rename.Names Note [Top-level Names in Template Haskell decl quotes]

INVARIANT 3: If the GlobalRdrEnv maps [occ -> gre], then greOccName gre = occ

data LocalRdrEnv #

Local Reader Environment See Note [LocalRdrEnv]

#### Instances

Instances details

Outputable LocalRdrEnv |
Instance details Defined in GHC.Types.Name.Reader Methods ppr :: LocalRdrEnv -> SDoc #

rdrNameOcc :: RdrName -> OccName #

rdrNameSpace :: RdrName -> NameSpace #

demoteRdrName :: RdrName -> Maybe RdrName #

demoteRdrNameTv :: RdrName -> Maybe RdrName #

promoteRdrName :: RdrName -> Maybe RdrName #

mkRdrUnqual :: OccName -> RdrName #

mkRdrQual :: ModuleName -> OccName -> RdrName #

mkOrig :: Module -> OccName -> RdrName #

mkUnqual :: NameSpace -> FastString -> RdrName #

mkVarUnqual :: FastString -> RdrName #

mkQual :: NameSpace -> (FastString, FastString) -> RdrName #

Make a qualified `RdrName` in the given namespace and where the `ModuleName` and the `OccName` are taken from the first and second elements of the tuple respectively

getRdrName :: NamedThing thing => thing -> RdrName #

nameRdrName :: Name -> RdrName #

isRdrDataCon :: RdrName -> Bool #

isRdrTyVar :: RdrName -> Bool #

isRdrTc :: RdrName -> Bool #

isSrcRdrName :: RdrName -> Bool #

isUnqual :: RdrName -> Bool #

isQual :: RdrName -> Bool #

isQual_maybe :: RdrName -> Maybe (ModuleName, OccName) #

isOrig :: RdrName -> Bool #

isOrig_maybe :: RdrName -> Maybe (Module, OccName) #

isExact :: RdrName -> Bool #

isExact_maybe :: RdrName -> Maybe Name #

emptyLocalRdrEnv :: LocalRdrEnv #

extendLocalRdrEnv :: LocalRdrEnv -> Name -> LocalRdrEnv #

extendLocalRdrEnvList :: LocalRdrEnv -> [Name] -> LocalRdrEnv #

lookupLocalRdrEnv :: LocalRdrEnv -> RdrName -> Maybe Name #

lookupLocalRdrOcc :: LocalRdrEnv -> OccName -> Maybe Name #

elemLocalRdrEnv :: RdrName -> LocalRdrEnv -> Bool #

localRdrEnvElts :: LocalRdrEnv -> [Name] #

inLocalRdrEnvScope :: Name -> LocalRdrEnv -> Bool #

minusLocalRdrEnv :: LocalRdrEnv -> OccEnv a -> LocalRdrEnv #

minusLocalRdrEnvList :: LocalRdrEnv -> [OccName] -> LocalRdrEnv #

greName :: GlobalRdrEltX info -> Name #

greNameSpace :: GlobalRdrEltX info -> NameSpace #

greParent :: GlobalRdrEltX info -> Parent #

greInfo :: GlobalRdrElt -> GREInfo #

mkGRE :: (Name -> Maybe ImportSpec) -> GREInfo -> Parent -> Name -> GlobalRdrElt #

mkExactGRE :: Name -> GREInfo -> GlobalRdrElt #

mkLocalGRE :: GREInfo -> Parent -> Name -> GlobalRdrElt #

mkLocalVanillaGRE :: Parent -> Name -> GlobalRdrElt #

mkLocalTyConGRE :: TyConFlavour Name -> Name -> GlobalRdrElt #

Create a local `GlobalRdrElt` for a `TyCon`.

mkLocalConLikeGRE :: Parent -> (ConLikeName, ConInfo) -> GlobalRdrElt #

mkLocalFieldGREs :: Parent -> [(ConLikeName, ConInfo)] -> [GlobalRdrElt] #

greOccName :: GlobalRdrEltX info -> OccName #

greDefinitionSrcSpan :: GlobalRdrEltX info -> SrcSpan #

The SrcSpan of the name pointed to by the GRE.

greDefinitionModule :: GlobalRdrEltX info -> Maybe Module #

The module in which the name pointed to by the GRE is defined.

greQualModName :: Outputable info => GlobalRdrEltX info -> ModuleName #

greRdrNames :: GlobalRdrEltX info -> [RdrName] #

greSrcSpan :: Outputable info => GlobalRdrEltX info -> SrcSpan #

mkParent :: Name -> AvailInfo -> Parent #

availParent :: AvailInfo -> Parent #

greParent_maybe :: GlobalRdrEltX info -> Maybe Name #

gresToNameSet :: [GlobalRdrEltX info] -> NameSet #

gresToAvailInfo :: [GlobalRdrEltX info] -> [AvailInfo] #

Takes a list of distinct GREs and folds them into AvailInfos. This is more efficient than mapping each individual GRE to an AvailInfo and then folding using `plusAvail`, but needs the uniqueness assumption.

availFromGRE :: GlobalRdrEltX info -> AvailInfo #

emptyGlobalRdrEnv :: GlobalRdrEnvX info #

globalRdrEnvElts :: GlobalRdrEnvX info -> [GlobalRdrEltX info] #

forceGlobalRdrEnv :: GlobalRdrEnvX info -> IfGlobalRdrEnv #

Drop all `GREInfo` fields in a `GlobalRdrEnv` in order to avoid space leaks. See Note [Forcing GREInfo] in GHC.Types.GREInfo.

hydrateGlobalRdrEnv :: (Name -> IO info) -> GlobalRdrEnvX noInfo -> GlobalRdrEnvX info #

Hydrate a previously dehydrated `GlobalRdrEnv`, by (lazily!) looking up the `GREInfo` using the provided function.

See Note [Forcing GREInfo] in GHC.Types.GREInfo.

pprGlobalRdrEnv :: Bool -> GlobalRdrEnv -> SDoc #

fieldGRE_maybe :: GlobalRdrElt -> Maybe FieldGlobalRdrElt #

fieldGRELabel :: HasDebugCallStack => FieldGlobalRdrElt -> FieldLabel #

fieldGREInfo :: HasDebugCallStack => FieldGlobalRdrElt -> RecFieldInfo #

recFieldConLike_maybe :: HasDebugCallStack => GlobalRdrElt -> Maybe ConInfo #

recFieldInfo_maybe :: HasDebugCallStack => GlobalRdrElt -> Maybe RecFieldInfo #

filterFieldGREs :: FieldsOrSelectors -> [GlobalRdrElt] -> [GlobalRdrElt] #

allowGRE :: FieldsOrSelectors -> GlobalRdrElt -> Bool #

greIsRelevant #

Arguments

:: WhichGREs GREInfo | specification of which `GlobalRdrElt`s to consider relevant
-> NameSpace | the `NameSpace` of the thing we are looking up
-> GlobalRdrElt | the `GlobalRdrElt` we have looked up, in a potentially different `NameSpace` than we wanted
-> Bool |

After looking up something with the given `NameSpace`, is the resulting `GlobalRdrElt` we have obtained relevant, according to the `RelevantGREs` specification of which `NameSpace`s are relevant?

lookupGRE :: GlobalRdrEnvX info -> LookupGRE info -> [GlobalRdrEltX info] #

Look something up in the Global Reader Environment.

The `LookupGRE` argument specifies what to look up, and in particular whether there should there be any lee-way if the `NameSpace`s don't exactly match.

lookupGRE_Name :: Outputable info => GlobalRdrEnvX info -> Name -> Maybe (GlobalRdrEltX info) #

Look for precisely this `Name` in the environment, in the same `NameSpace` as the `Name`.

This tests whether it is in scope, ignoring anything else that might be in scope which doesn't have the same `Unique`.

lookupGRE_FieldLabel :: GlobalRdrEnv -> FieldLabel -> Maybe FieldGlobalRdrElt #

Look for a particular record field selector in the environment.

getGRE_NameQualifier_maybes :: GlobalRdrEnv -> Name -> [Maybe [ModuleName]] #

isLocalGRE :: GlobalRdrEltX info -> Bool #

Is this `GlobalRdrElt` defined locally?

isImportedGRE :: GlobalRdrEltX info -> Bool #

Is this `GlobalRdrElt` imported?

Not just the negation of `isLocalGRE`, because it might be an Exact or Orig name reference. See Note [GlobalRdrElt provenance].

isRecFldGRE :: GlobalRdrEltX info -> Bool #

Is this a record field GRE?

Important: does not consult the `GreInfo` field.

isDuplicateRecFldGRE :: GlobalRdrElt -> Bool #

Is this a record field defined with DuplicateRecordFields?

isNoFieldSelectorGRE :: GlobalRdrElt -> Bool #

Is this a record field defined with NoFieldSelectors? (See Note [NoFieldSelectors] in GHC.Rename.Env)

isFieldSelectorGRE :: GlobalRdrElt -> Bool #

Is this a record field defined with FieldSelectors? (See Note [NoFieldSelectors] in GHC.Rename.Env)

greFieldLabel_maybe :: GlobalRdrElt -> Maybe FieldLabel #

Returns the field label of this GRE, if it has one

unQualOK :: GlobalRdrEltX info -> Bool #

Test if an unqualified version of this thing would be in scope

pickGREs :: RdrName -> [GlobalRdrEltX info] -> [GlobalRdrEltX info] #

Takes a list of GREs which have the right OccName `x` Pick those GREs that are in scope * Qualified, as `x` if want_qual is Qual M _ * Unqualified, as `x` if want_unqual is Unqual _

Return each such GRE, with its ImportSpecs filtered, to reflect how it is in scope qualified or unqualified respectively. See Note [GRE filtering]

pickGREsModExp :: ModuleName -> [GlobalRdrEltX info] -> [(GlobalRdrEltX info, GlobalRdrEltX info)] #

Pick GREs that are in scope *both* qualified *and* unqualified Return each GRE that is, as a pair (qual_gre, unqual_gre) These two GREs are the original GRE with imports filtered to express how it is in scope qualified an unqualified respectively

Used only for the 'module M' item in export list; see `exports_from_avail`

plusGlobalRdrEnv :: GlobalRdrEnv -> GlobalRdrEnv -> GlobalRdrEnv #

mkGlobalRdrEnv :: [GlobalRdrElt] -> GlobalRdrEnv #

insertGRE :: GlobalRdrElt -> [GlobalRdrElt] -> [GlobalRdrElt] #

plusGRE :: GlobalRdrElt -> GlobalRdrElt -> GlobalRdrElt #

transformGREs :: (GlobalRdrElt -> GlobalRdrElt) -> [OccName] -> GlobalRdrEnv -> GlobalRdrEnv #

Apply a transformation function to the GREs for these OccNames

extendGlobalRdrEnv :: GlobalRdrEnv -> GlobalRdrElt -> GlobalRdrEnv #

shadowNames #

Arguments

:: Bool | discard names that are only available qualified?
-> GlobalRdrEnv |
-> GlobalRdrEnv |
-> GlobalRdrEnv |

greClashesWith :: GlobalRdrElt -> GlobalRdrElt -> Bool #

`greClashesWith new_gre old_gre` computes whether `new_gre` clashes with `old_gre` (assuming they both have the same underlying `occNameFS`).

bestImport :: NonEmpty ImportSpec -> ImportSpec #

unQualSpecOK :: ImportSpec -> Bool #

Is in scope unqualified?

qualSpecOK :: ModuleName -> ImportSpec -> Bool #

Is in scope qualified with the given module?

importSpecLoc :: ImportSpec -> SrcSpan #

importSpecModule :: ImportSpec -> ModuleName #

isExplicitItem :: ImpItemSpec -> Bool #

pprNameProvenance :: GlobalRdrEltX info -> SDoc #

Print out one place where the name was define/imported (With -dppr-debug, print them all)

opIsAt :: RdrName -> Bool #

Indicate if the given name is the "@" operator

data Severity #

Used to describe warnings and errors o The message has a file/line/column heading, plus "warning:" or "error:", added by mkLocMessage o With `SevIgnore` the message is suppressed o Output is intended for end users

Constructors

SevIgnore | Ignore this message, for example in case of suppression of warnings users don't want to see. See Note [Suppressing Messages]
SevWarning |
SevError |

#### Instances

Instances details

Show Severity |
Instance details Defined in GHC.Types.Error Methods showsPrec :: Int -> Severity -> ShowS # show :: Severity -> String # showList :: [Severity] -> ShowS #
ToJson Severity |
Instance details Defined in GHC.Types.Error Methods json :: Severity -> JsonDoc #
Outputable Severity |
Instance details Defined in GHC.Types.Error Methods ppr :: Severity -> SDoc #
Eq Severity |
Instance details Defined in GHC.Types.Error Methods (==) :: Severity -> Severity -> Bool # (/=) :: Severity -> Severity -> Bool #
Ord Severity |
Instance details Defined in GHC.Types.Error Methods compare :: Severity -> Severity -> Ordering # (<) :: Severity -> Severity -> Bool # (<=) :: Severity -> Severity -> Bool # (>) :: Severity -> Severity -> Bool # (>=) :: Severity -> Severity -> Bool # max :: Severity -> Severity -> Severity # min :: Severity -> Severity -> Severity #

emptyMessages :: Messages e #

data HscSource #

Constructors

HsSrcFile | .hs file
HsBootOrSig !HsBootOrSig | .hs-boot or .hsig file

Bundled Patterns

pattern HsigFile :: HscSource |
pattern HsBootFile :: HscSource |

#### Instances

Instances details

Show HscSource |
Instance details Defined in GHC.Types.SourceFile Methods showsPrec :: Int -> HscSource -> ShowS # show :: HscSource -> String # showList :: [HscSource] -> ShowS #
Binary HscSource |
Instance details Defined in GHC.Types.SourceFile Methods put_ :: BinHandle -> HscSource -> IO () # put :: BinHandle -> HscSource -> IO (Bin HscSource) # get :: BinHandle -> IO HscSource #
Eq HscSource |
Instance details Defined in GHC.Types.SourceFile Methods (==) :: HscSource -> HscSource -> Bool # (/=) :: HscSource -> HscSource -> Bool #
Ord HscSource |
Instance details Defined in GHC.Types.SourceFile Methods compare :: HscSource -> HscSource -> Ordering # (<) :: HscSource -> HscSource -> Bool # (<=) :: HscSource -> HscSource -> Bool # (>) :: HscSource -> HscSource -> Bool # (>=) :: HscSource -> HscSource -> Bool # max :: HscSource -> HscSource -> HscSource # min :: HscSource -> HscSource -> HscSource #

module GHC.Types.SourceText

module GHC.Types.TyThing

module GHC.Types.TyThing.Ppr

module GHC.Types.Unique.Supply

data Var #

Variable

Essentially a typed `Name`, that may also contain some additional information about the `Var` and its use sites.

#### Instances

Instances details

Data Var |

Instance details

Defined in GHC.Types.Var

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Var -> c Var #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Var #

toConstr :: Var -> Constr #

dataTypeOf :: Var -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Var) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Var) #

gmapT :: (forall b. Data b => b -> b) -> Var -> Var #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r #

gmapQ :: (forall d. Data d => d -> u) -> Var -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Var -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Var -> m Var #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Var -> m Var #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Var -> m Var #

ModifyState Id |
Instance details Defined in GHC.Iface.Ext.Ast Methods addSubstitution :: Id -> Id -> HieState -> HieState
NamedThing Var |
Instance details Defined in GHC.Types.Var Methods getOccName :: Var -> OccName # getName :: Var -> Name #
HasOccName Var |
Instance details Defined in GHC.Types.Var Methods occName :: Var -> OccName #
Uniquable Var |
Instance details Defined in GHC.Types.Var Methods getUnique :: Var -> Unique #
Outputable Var |
Instance details Defined in GHC.Types.Var Methods ppr :: Var -> SDoc #
Eq Var |
Instance details Defined in GHC.Types.Var Methods (==) :: Var -> Var -> Bool # (/=) :: Var -> Var -> Bool #
Ord Var |
Instance details Defined in GHC.Types.Var Methods compare :: Var -> Var -> Ordering # (<) :: Var -> Var -> Bool # (<=) :: Var -> Var -> Bool # (>) :: Var -> Var -> Bool # (>=) :: Var -> Var -> Bool # max :: Var -> Var -> Var # min :: Var -> Var -> Var #
ToHie (Context (Located Var)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (Located Var) -> HieM [HieAST Type]
Eq (DeBruijn Var) |
Instance details Defined in GHC.Core.Map.Type Methods (==) :: DeBruijn Var -> DeBruijn Var -> Bool # (/=) :: DeBruijn Var -> DeBruijn Var -> Bool #
OutputableBndr (Id, TagSig) |
Instance details Defined in GHC.Stg.InferTags.TagSig Methods pprBndr :: BindingSite -> (Id, TagSig) -> SDoc # pprPrefixOcc :: (Id, TagSig) -> SDoc # pprInfixOcc :: (Id, TagSig) -> SDoc # bndrIsJoin_maybe :: (Id, TagSig) -> Maybe Int #
type Anno Id |
Instance details Defined in GHC.Hs.Extension type Anno Id = SrcSpanAnnN
type Anno (LocatedN Id) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Id) = SrcSpan
type Anno [LocatedN Id] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Id] = SrcSpan

setVarUnique :: Var -> Unique -> Var #

setTyVarUnique :: TyVar -> Unique -> TyVar #

type Unit = GenUnit UnitId #

type Module = GenModule Unit #

A Module is a pair of a `Unit` and a `ModuleName`.

data GenModule unit #

A generic module is a pair of a unit identifier and a `ModuleName`.

Constructors

Module !unit !ModuleName |

#### Instances

Instances details

Functor GenModule |
Instance details Defined in GHC.Unit.Types Methods fmap :: (a -> b) -> GenModule a -> GenModule b # (<$) :: a -> GenModule b -> GenModule a #
Show Module # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> Module -> ShowS # show :: Module -> String # showList :: [Module] -> ShowS #
Uniquable Module |
Instance details Defined in GHC.Unit.Types Methods getUnique :: Module -> Unique #
Outputable InstalledModule |
Instance details Defined in GHC.Unit.Types Methods ppr :: InstalledModule -> SDoc #
Outputable InstantiatedModule |
Instance details Defined in GHC.Unit.Types Methods ppr :: InstantiatedModule -> SDoc #
Outputable Module |
Instance details Defined in GHC.Unit.Types Methods ppr :: Module -> SDoc #
Data unit => Data (GenModule unit) |

Instance details

Defined in GHC.Unit.Types

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GenModule unit -> c (GenModule unit) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (GenModule unit) #

toConstr :: GenModule unit -> Constr #

dataTypeOf :: GenModule unit -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (GenModule unit)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (GenModule unit)) #

gmapT :: (forall b. Data b => b -> b) -> GenModule unit -> GenModule unit #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GenModule unit -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GenModule unit -> r #

gmapQ :: (forall d. Data d => d -> u) -> GenModule unit -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> GenModule unit -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> GenModule unit -> m (GenModule unit) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GenModule unit -> m (GenModule unit) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GenModule unit -> m (GenModule unit) #

NFData (GenModule a) |
Instance details Defined in GHC.Unit.Types Methods rnf :: GenModule a -> () #
Binary a => Binary (GenModule a) |
Instance details Defined in GHC.Unit.Types Methods put_ :: BinHandle -> GenModule a -> IO () # put :: BinHandle -> GenModule a -> IO (Bin (GenModule a)) # get :: BinHandle -> IO (GenModule a) #
Eq unit => Eq (GenModule unit) |
Instance details Defined in GHC.Unit.Types Methods (==) :: GenModule unit -> GenModule unit -> Bool # (/=) :: GenModule unit -> GenModule unit -> Bool #
Ord unit => Ord (GenModule unit) |

Instance details

Defined in GHC.Unit.Types

Methods

compare :: GenModule unit -> GenModule unit -> Ordering #

(<) :: GenModule unit -> GenModule unit -> Bool #

(<=) :: GenModule unit -> GenModule unit -> Bool #

(>) :: GenModule unit -> GenModule unit -> Bool #

(>=) :: GenModule unit -> GenModule unit -> Bool #

max :: GenModule unit -> GenModule unit -> GenModule unit #

min :: GenModule unit -> GenModule unit -> GenModule unit #

newtype ModuleName #

A ModuleName is essentially a simple string, e.g. `Data.List`.

Constructors

ModuleName FastString |

#### Instances

Instances details

Data ModuleName |

Instance details

Defined in Language.Haskell.Syntax.Module.Name

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModuleName -> c ModuleName #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModuleName #

toConstr :: ModuleName -> Constr #

dataTypeOf :: ModuleName -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ModuleName) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModuleName) #

gmapT :: (forall b. Data b => b -> b) -> ModuleName -> ModuleName #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModuleName -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModuleName -> r #

gmapQ :: (forall d. Data d => d -> u) -> ModuleName -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ModuleName -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModuleName -> m ModuleName #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleName -> m ModuleName #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleName -> m ModuleName #

Show ModuleName |
Instance details Defined in Language.Haskell.Syntax.Module.Name Methods showsPrec :: Int -> ModuleName -> ShowS # show :: ModuleName -> String # showList :: [ModuleName] -> ShowS #
NFData ModuleName |
Instance details Defined in Language.Haskell.Syntax.Module.Name Methods rnf :: ModuleName -> () #
Uniquable ModuleName |
Instance details Defined in GHC.Types.Unique Methods getUnique :: ModuleName -> Unique #
Binary ModuleName |
Instance details Defined in GHC.Utils.Binary Methods put_ :: BinHandle -> ModuleName -> IO () # put :: BinHandle -> ModuleName -> IO (Bin ModuleName) # get :: BinHandle -> IO ModuleName #
Outputable ModuleName |
Instance details Defined in GHC.Utils.Outputable Methods ppr :: ModuleName -> SDoc #
Eq ModuleName |
Instance details Defined in Language.Haskell.Syntax.Module.Name Methods (==) :: ModuleName -> ModuleName -> Bool # (/=) :: ModuleName -> ModuleName -> Bool #
Ord ModuleName |
Instance details Defined in Language.Haskell.Syntax.Module.Name Methods compare :: ModuleName -> ModuleName -> Ordering # (<) :: ModuleName -> ModuleName -> Bool # (<=) :: ModuleName -> ModuleName -> Bool # (>) :: ModuleName -> ModuleName -> Bool # (>=) :: ModuleName -> ModuleName -> Bool # max :: ModuleName -> ModuleName -> ModuleName # min :: ModuleName -> ModuleName -> ModuleName #
Hashable ModuleName # |
Instance details Defined in Development.IDE.GHC.Orphans Methods hashWithSalt :: Int -> ModuleName -> Int # hash :: ModuleName -> Int #
ToHie (IEContext (LocatedA ModuleName)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA ModuleName) -> HieM [HieAST Type]
type Anno ModuleName |
Instance details Defined in GHC.Hs type Anno ModuleName = SrcSpanAnnA
type Anno ModuleName |
Instance details Defined in GHC.Hs.ImpExp type Anno ModuleName = SrcSpanAnnA

stableModuleNameCmp :: ModuleName -> ModuleName -> Ordering #

Compares module names lexically, rather than by their `Unique`s

moduleNameFS :: ModuleName -> FastString #

moduleNameString :: ModuleName -> String #

mkModuleName :: String -> ModuleName #

mkModuleNameFS :: FastString -> ModuleName #

moduleNameSlashes :: ModuleName -> String #

Returns the string version of the module name, with dots replaced by slashes.

moduleNameColons :: ModuleName -> String #

Returns the string version of the module name, with dots replaced by colons.

parseModuleName :: ReadP ModuleName #

data IsBootInterface #

Indicates whether a module name is referring to a boot interface (hs-boot file) or regular module (hs file). We need to treat boot modules specially when building compilation graphs, since they break cycles. Regular source files and signature files are treated equivalently.

Constructors

NotBoot |
IsBoot |

#### Instances

Instances details

Data IsBootInterface |

Instance details

Defined in Language.Haskell.Syntax.ImpExp

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IsBootInterface -> c IsBootInterface #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c IsBootInterface #

toConstr :: IsBootInterface -> Constr #

dataTypeOf :: IsBootInterface -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c IsBootInterface) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IsBootInterface) #

gmapT :: (forall b. Data b => b -> b) -> IsBootInterface -> IsBootInterface #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IsBootInterface -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IsBootInterface -> r #

gmapQ :: (forall d. Data d => d -> u) -> IsBootInterface -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> IsBootInterface -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> IsBootInterface -> m IsBootInterface #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IsBootInterface -> m IsBootInterface #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IsBootInterface -> m IsBootInterface #

Show IsBootInterface |
Instance details Defined in Language.Haskell.Syntax.ImpExp Methods showsPrec :: Int -> IsBootInterface -> ShowS # show :: IsBootInterface -> String # showList :: [IsBootInterface] -> ShowS #
Eq IsBootInterface |
Instance details Defined in Language.Haskell.Syntax.ImpExp Methods (==) :: IsBootInterface -> IsBootInterface -> Bool # (/=) :: IsBootInterface -> IsBootInterface -> Bool #
Ord IsBootInterface |

Instance details

Defined in Language.Haskell.Syntax.ImpExp

Methods

compare :: IsBootInterface -> IsBootInterface -> Ordering #

(<) :: IsBootInterface -> IsBootInterface -> Bool #

(<=) :: IsBootInterface -> IsBootInterface -> Bool #

(>) :: IsBootInterface -> IsBootInterface -> Bool #

(>=) :: IsBootInterface -> IsBootInterface -> Bool #

max :: IsBootInterface -> IsBootInterface -> IsBootInterface #

min :: IsBootInterface -> IsBootInterface -> IsBootInterface #

data GenUnit uid #

A unit identifier identifies a (possibly partially) instantiated library. It is primarily used as part of `Module`, which in turn is used in `Name`, which is used to give names to entities when typechecking.

There are two possible forms for a `Unit`:

1) It can be a `RealUnit`, in which case we just have a `DefUnitId` that uniquely identifies some fully compiled, installed library we have on disk.

2) It can be an `VirtUnit`. When we are typechecking a library with missing holes, we may need to instantiate a library on the fly (in which case we don't have any on-disk representation.) In that case, you have an `InstantiatedUnit`, which explicitly records the instantiation, so that we can substitute over it.

Constructors

RealUnit !(Definite uid) | Installed definite unit (either a fully instantiated unit or a closed unit)
VirtUnit !(GenInstantiatedUnit uid) | Virtual unit instantiated on-the-fly. It may be definite if all the holes are instantiated but we don't have code objects for it.
HoleUnit | Fake hole unit

#### Instances

Instances details

Data Unit |

Instance details

Defined in GHC.Unit.Types

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Unit -> c Unit #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Unit #

toConstr :: Unit -> Constr #

dataTypeOf :: Unit -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Unit) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Unit) #

gmapT :: (forall b. Data b => b -> b) -> Unit -> Unit #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Unit -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Unit -> r #

gmapQ :: (forall d. Data d => d -> u) -> Unit -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Unit -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Unit -> m Unit #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Unit -> m Unit #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Unit -> m Unit #

Show Module # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> Module -> ShowS # show :: Module -> String # showList :: [Module] -> ShowS #
Show Unit |
Instance details Defined in GHC.Unit.Types Methods showsPrec :: Int -> Unit -> ShowS # show :: Unit -> String # showList :: [Unit] -> ShowS #
NFData Unit |
Instance details Defined in GHC.Unit.Types Methods rnf :: Unit -> () #
Uniquable Module |
Instance details Defined in GHC.Unit.Types Methods getUnique :: Module -> Unique #
Binary Unit |
Instance details Defined in GHC.Unit.Types Methods put_ :: BinHandle -> Unit -> IO () # put :: BinHandle -> Unit -> IO (Bin Unit) # get :: BinHandle -> IO Unit #
Outputable Module |
Instance details Defined in GHC.Unit.Types Methods ppr :: Module -> SDoc #
Outputable Unit |
Instance details Defined in GHC.Unit.Types Methods ppr :: Unit -> SDoc #
Ord Unit |
Instance details Defined in GHC.Unit.Types Methods compare :: Unit -> Unit -> Ordering # (<) :: Unit -> Unit -> Bool # (<=) :: Unit -> Unit -> Bool # (>) :: Unit -> Unit -> Bool # (>=) :: Unit -> Unit -> Bool # max :: Unit -> Unit -> Unit # min :: Unit -> Unit -> Unit #
IsUnitId u => Uniquable (GenUnit u) |
Instance details Defined in GHC.Unit.Types Methods getUnique :: GenUnit u -> Unique #
IsUnitId u => IsUnitId (GenUnit u) |
Instance details Defined in GHC.Unit.Types Methods unitFS :: GenUnit u -> FastString #
IsUnitId u => Eq (GenUnit u) |
Instance details Defined in GHC.Unit.Types Methods (==) :: GenUnit u -> GenUnit u -> Bool # (/=) :: GenUnit u -> GenUnit u -> Bool #

type ModuleWithIsBoot = GenWithIsBoot Module #

type ModuleNameWithIsBoot = GenWithIsBoot ModuleName #

data GenWithIsBoot mod #

This data type just pairs a value `mod` with an IsBootInterface flag. In practice, `mod` is usually a `Module` or `ModuleName`'.

Constructors

GWIB |

Fields

- gwib_mod :: mod
- gwib_isBoot :: IsBootInterface

#### Instances

Instances details

Foldable GenWithIsBoot |

Instance details

Defined in GHC.Unit.Types

Methods

fold :: Monoid m => GenWithIsBoot m -> m #

foldMap :: Monoid m => (a -> m) -> GenWithIsBoot a -> m #

foldMap' :: Monoid m => (a -> m) -> GenWithIsBoot a -> m #

foldr :: (a -> b -> b) -> b -> GenWithIsBoot a -> b #

foldr' :: (a -> b -> b) -> b -> GenWithIsBoot a -> b #

foldl :: (b -> a -> b) -> b -> GenWithIsBoot a -> b #

foldl' :: (b -> a -> b) -> b -> GenWithIsBoot a -> b #

foldr1 :: (a -> a -> a) -> GenWithIsBoot a -> a #

foldl1 :: (a -> a -> a) -> GenWithIsBoot a -> a #

toList :: GenWithIsBoot a -> [a] #

null :: GenWithIsBoot a -> Bool #

length :: GenWithIsBoot a -> Int #

elem :: Eq a => a -> GenWithIsBoot a -> Bool #

maximum :: Ord a => GenWithIsBoot a -> a #

minimum :: Ord a => GenWithIsBoot a -> a #

sum :: Num a => GenWithIsBoot a -> a #

product :: Num a => GenWithIsBoot a -> a #

Traversable GenWithIsBoot |
Instance details Defined in GHC.Unit.Types Methods traverse :: Applicative f => (a -> f b) -> GenWithIsBoot a -> f (GenWithIsBoot b) # sequenceA :: Applicative f => GenWithIsBoot (f a) -> f (GenWithIsBoot a) # mapM :: Monad m => (a -> m b) -> GenWithIsBoot a -> m (GenWithIsBoot b) # sequence :: Monad m => GenWithIsBoot (m a) -> m (GenWithIsBoot a) #
Functor GenWithIsBoot |
Instance details Defined in GHC.Unit.Types Methods fmap :: (a -> b) -> GenWithIsBoot a -> GenWithIsBoot b # (<$) :: a -> GenWithIsBoot b -> GenWithIsBoot a #
Show mod => Show (GenWithIsBoot mod) |
Instance details Defined in GHC.Unit.Types Methods showsPrec :: Int -> GenWithIsBoot mod -> ShowS # show :: GenWithIsBoot mod -> String # showList :: [GenWithIsBoot mod] -> ShowS #
Binary a => Binary (GenWithIsBoot a) |
Instance details Defined in GHC.Unit.Types Methods put_ :: BinHandle -> GenWithIsBoot a -> IO () # put :: BinHandle -> GenWithIsBoot a -> IO (Bin (GenWithIsBoot a)) # get :: BinHandle -> IO (GenWithIsBoot a) #
Outputable a => Outputable (GenWithIsBoot a) |
Instance details Defined in GHC.Unit.Types Methods ppr :: GenWithIsBoot a -> SDoc #
Eq mod => Eq (GenWithIsBoot mod) |
Instance details Defined in GHC.Unit.Types Methods (==) :: GenWithIsBoot mod -> GenWithIsBoot mod -> Bool # (/=) :: GenWithIsBoot mod -> GenWithIsBoot mod -> Bool #
Ord mod => Ord (GenWithIsBoot mod) |

Instance details

Defined in GHC.Unit.Types

Methods

compare :: GenWithIsBoot mod -> GenWithIsBoot mod -> Ordering #

(<) :: GenWithIsBoot mod -> GenWithIsBoot mod -> Bool #

(<=) :: GenWithIsBoot mod -> GenWithIsBoot mod -> Bool #

(>) :: GenWithIsBoot mod -> GenWithIsBoot mod -> Bool #

(>=) :: GenWithIsBoot mod -> GenWithIsBoot mod -> Bool #

max :: GenWithIsBoot mod -> GenWithIsBoot mod -> GenWithIsBoot mod #

min :: GenWithIsBoot mod -> GenWithIsBoot mod -> GenWithIsBoot mod #

newtype Definite unit #

A definite unit (i.e. without any free module hole)

Constructors

Definite |

Fields

- unDefinite :: unit

#### Instances

Instances details

Functor Definite |
Instance details Defined in GHC.Unit.Types Methods fmap :: (a -> b) -> Definite a -> Definite b # (<$) :: a -> Definite b -> Definite a #
Uniquable unit => Uniquable (Definite unit) |
Instance details Defined in GHC.Unit.Types Methods getUnique :: Definite unit -> Unique #
IsUnitId unit => IsUnitId (Definite unit) |
Instance details Defined in GHC.Unit.Types Methods unitFS :: Definite unit -> FastString #
Binary unit => Binary (Definite unit) |
Instance details Defined in GHC.Unit.Types Methods put_ :: BinHandle -> Definite unit -> IO () # put :: BinHandle -> Definite unit -> IO (Bin (Definite unit)) # get :: BinHandle -> IO (Definite unit) #
Outputable unit => Outputable (Definite unit) |
Instance details Defined in GHC.Unit.Types Methods ppr :: Definite unit -> SDoc #
Eq unit => Eq (Definite unit) |
Instance details Defined in GHC.Unit.Types Methods (==) :: Definite unit -> Definite unit -> Bool # (/=) :: Definite unit -> Definite unit -> Bool #
Ord unit => Ord (Definite unit) |

Instance details

Defined in GHC.Unit.Types

Methods

compare :: Definite unit -> Definite unit -> Ordering #

(<) :: Definite unit -> Definite unit -> Bool #

(<=) :: Definite unit -> Definite unit -> Bool #

(>) :: Definite unit -> Definite unit -> Bool #

(>=) :: Definite unit -> Definite unit -> Bool #

max :: Definite unit -> Definite unit -> Definite unit #

min :: Definite unit -> Definite unit -> Definite unit #

type DefUnitId = Definite UnitId #

A `DefUnitId` is an `UnitId` with the invariant that it only refers to a definite library; i.e., one we have generated code for.

unitIdFS :: UnitId -> FastString #

The full hashed unit identifier, including the component id and the hash.

type Instantiations = GenInstantiations UnitId #

type GenInstantiations unit = [(ModuleName, GenModule (GenUnit unit))] #

type InstantiatedUnit = GenInstantiatedUnit UnitId #

data GenInstantiatedUnit unit #

An instantiated unit.

It identifies an indefinite library (with holes) that has been instantiated.

This unit may be indefinite or not (i.e. with remaining holes or not). If it is definite, we don't know if it has already been compiled and installed in a database. Nevertheless, we have a mechanism called "improvement" to try to match a fully instantiated unit with existing compiled and installed units: see Note [VirtUnit to RealUnit improvement].

An indefinite unit identifier pretty-prints to something like `p[H=H,A=aimpl:A>]` (`p` is the `UnitId`, and the brackets enclose the module substitution).

Constructors

InstantiatedUnit |

Fields

- instUnitFS :: !FastString

  A private, uniquely identifying representation of an InstantiatedUnit. This string is completely private to GHC and is just used to get a unique.

- instUnitKey :: !Unique

  Cached unique of `unitFS`.

- instUnitInstanceOf :: !unit

  The (indefinite) unit being instantiated.

- instUnitInsts :: !(GenInstantiations unit)

  The sorted (by `ModuleName`) instantiations of this unit.

- instUnitHoles :: UniqDSet ModuleName

  A cache of the free module holes of `instUnitInsts`. This lets us efficiently tell if a `InstantiatedUnit` has been fully instantiated (empty set of free module holes) and whether or not a substitution can have any effect.

#### Instances

Instances details

Binary InstantiatedUnit |
Instance details Defined in GHC.Unit.Types Methods put_ :: BinHandle -> InstantiatedUnit -> IO () # put :: BinHandle -> InstantiatedUnit -> IO (Bin InstantiatedUnit) # get :: BinHandle -> IO InstantiatedUnit #
Outputable InstantiatedModule |
Instance details Defined in GHC.Unit.Types Methods ppr :: InstantiatedModule -> SDoc #
Outputable InstantiatedUnit |
Instance details Defined in GHC.Unit.Types Methods ppr :: InstantiatedUnit -> SDoc #
Eq (GenInstantiatedUnit unit) |
Instance details Defined in GHC.Unit.Types Methods (==) :: GenInstantiatedUnit unit -> GenInstantiatedUnit unit -> Bool # (/=) :: GenInstantiatedUnit unit -> GenInstantiatedUnit unit -> Bool #
Ord (GenInstantiatedUnit unit) |

Instance details

Defined in GHC.Unit.Types

Methods

compare :: GenInstantiatedUnit unit -> GenInstantiatedUnit unit -> Ordering #

(<) :: GenInstantiatedUnit unit -> GenInstantiatedUnit unit -> Bool #

(<=) :: GenInstantiatedUnit unit -> GenInstantiatedUnit unit -> Bool #

(>) :: GenInstantiatedUnit unit -> GenInstantiatedUnit unit -> Bool #

(>=) :: GenInstantiatedUnit unit -> GenInstantiatedUnit unit -> Bool #

max :: GenInstantiatedUnit unit -> GenInstantiatedUnit unit -> GenInstantiatedUnit unit #

min :: GenInstantiatedUnit unit -> GenInstantiatedUnit unit -> GenInstantiatedUnit unit #

newtype UnitKey #

A unit key in the database

Constructors

UnitKey FastString |

#### Instances

Instances details

IsUnitId UnitKey |
Instance details Defined in GHC.Unit.Types Methods unitFS :: UnitKey -> FastString #

class IsUnitId u where #

Class for types that are used as unit identifiers (UnitKey, UnitId, Unit)

We need this class because we create new unit ids for virtual units (see VirtUnit) and they have to to be made from units with different kinds of identifiers.

Methods

unitFS :: u -> FastString #

#### Instances

Instances details

IsUnitId UnitId |
Instance details Defined in GHC.Unit.Types Methods unitFS :: UnitId -> FastString #
IsUnitId UnitKey |
Instance details Defined in GHC.Unit.Types Methods unitFS :: UnitKey -> FastString #
IsUnitId unit => IsUnitId (Definite unit) |
Instance details Defined in GHC.Unit.Types Methods unitFS :: Definite unit -> FastString #
IsUnitId u => IsUnitId (GenUnit u) |
Instance details Defined in GHC.Unit.Types Methods unitFS :: GenUnit u -> FastString #

type InstantiatedModule = GenModule InstantiatedUnit #

An `InstantiatedModule` is a `Module` whose unit is identified with an `InstantiatedUnit`.

type HomeUnitModule = GenModule UnitId #

A `HomeUnitModule` is like an `InstalledModule` but we expect to find it in one of the home units rather than the package database.

type InstalledModule = GenModule UnitId #

A `InstalledModule` is a `Module` whose unit is identified with an `UnitId`.

moduleUnitId :: Module -> UnitId #

mkModule :: u -> ModuleName -> GenModule u #

pprModule :: IsLine doc => Module -> doc #

pprInstantiatedModule :: InstantiatedModule -> SDoc #

isHoleUnit :: GenUnit u -> Bool #

stableUnitCmp :: Unit -> Unit -> Ordering #

Compares unit ids lexically, rather than by their `Unique`s

pprUnit :: Unit -> SDoc #

unitFreeModuleHoles :: GenUnit u -> UniqDSet ModuleName #

Retrieve the set of free module holes of a `Unit`.

moduleFreeHoles :: GenModule (GenUnit u) -> UniqDSet ModuleName #

Calculate the free holes of a `Module`. If this set is non-empty, this module was defined in an indefinite library that had required signatures.

If a module has free holes, that means that substitutions can operate on it; if it has no free holes, substituting over a module has no effect.

mkInstantiatedUnit :: IsUnitId u => u -> GenInstantiations u -> GenInstantiatedUnit u #

Create a new `GenInstantiatedUnit` given an explicit module substitution.

mkVirtUnit :: IsUnitId u => u -> [(ModuleName, GenModule (GenUnit u))] -> GenUnit u #

Smart constructor for instantiated GenUnit

mkInstantiatedUnitHash :: IsUnitId u => u -> [(ModuleName, GenModule (GenUnit u))] -> FastString #

Generate a uniquely identifying hash (internal unit-id) for an instantiated unit.

This is a one-way function. If the indefinite unit has not been instantiated at all, we return its unit-id.

This hash is completely internal to GHC and is not used for symbol names or file paths. It is different from the hash Cabal would produce for the same instantiated unit.

fsToUnit :: FastString -> Unit #

Create a new simple unit identifier from a `FastString`. Internally, this is primarily used to specify wired-in unit identifiers.

unitString :: IsUnitId u => u -> String #

stringToUnit :: String -> Unit #

mapGenUnit :: IsUnitId v => (u -> v) -> GenUnit u -> GenUnit v #

Map over the unit type of a `GenUnit`

mapInstantiations :: IsUnitId v => (u -> v) -> GenInstantiations u -> GenInstantiations v #

Map over the unit identifier of unit instantiations.

virtualUnitId :: InstantiatedUnit -> UnitId #

Return the virtual UnitId of an on-the-fly instantiated unit.

unitIsDefinite :: Unit -> Bool #

A `Unit` is definite if it has no free holes.

unitIdString :: UnitId -> String #

stringToUnitId :: String -> UnitId #

primUnitId :: UnitId #

bignumUnitId :: UnitId #

baseUnitId :: UnitId #

rtsUnitId :: UnitId #

thisGhcUnitId :: UnitId #

interactiveUnitId :: UnitId #

thUnitId :: UnitId #

thUnit :: Unit #

primUnit :: Unit #

bignumUnit :: Unit #

baseUnit :: Unit #

rtsUnit :: Unit #

thisGhcUnit :: Unit #

interactiveUnit :: Unit #

mainUnitId :: UnitId #

This is the package Id for the current program. It is the default package Id if you don't specify a package name. We don't add this prefix to symbol names, since there can be only one main package per program.

mainUnit :: Unit #

isInteractiveModule :: Module -> Bool #

wiredInUnitIds :: [UnitId] #

addBootSuffix :: FilePath -> FilePath #

Add the `-boot` suffix to .hs, .hi and .o files

removeBootSuffix :: FilePath -> FilePath #

Remove the `-boot` suffix to .hs, .hi and .o files

addBootSuffix_maybe :: IsBootInterface -> FilePath -> FilePath #

Add the `-boot` suffix if the `Bool` argument is `True`

addBootSuffixLocn_maybe :: IsBootInterface -> ModLocation -> ModLocation #

addBootSuffixLocn :: ModLocation -> ModLocation #

Add the `-boot` suffix to all file paths associated with the module

addBootSuffixLocnOut :: ModLocation -> ModLocation #

Add the `-boot` suffix to all output file paths associated with the module, not including the input file itself

data InstalledModuleEnv elt #

A map keyed off of `InstalledModule`

#### Instances

Instances details

Outputable elt => Outputable (InstalledModuleEnv elt) |
Instance details Defined in GHC.Unit.Module.Env Methods ppr :: InstalledModuleEnv elt -> SDoc #

type DModuleNameEnv elt = UniqDFM ModuleName elt #

A map keyed off of `ModuleName`s (actually, their `Unique`s) Has deterministic folds and can be deterministically converted to a list

type ModuleNameEnv elt = UniqFM ModuleName elt #

A map keyed off of `ModuleName`s (actually, their `Unique`s)

type ModuleSet = Set NDModule #

A set of `Module`s

data ModuleEnv elt #

A map keyed off of `Module`s

#### Instances

Instances details

Outputable a => Outputable (ModuleEnv a) |
Instance details Defined in GHC.Unit.Module.Env Methods ppr :: ModuleEnv a -> SDoc #

filterModuleEnv :: (Module -> a -> Bool) -> ModuleEnv a -> ModuleEnv a #

mapMaybeModuleEnv :: (Module -> a -> Maybe b) -> ModuleEnv a -> ModuleEnv b #

elemModuleEnv :: Module -> ModuleEnv a -> Bool #

extendModuleEnv :: ModuleEnv a -> Module -> a -> ModuleEnv a #

extendModuleEnvWith :: (a -> a -> a) -> ModuleEnv a -> Module -> a -> ModuleEnv a #

extendModuleEnvList :: ModuleEnv a -> [(Module, a)] -> ModuleEnv a #

extendModuleEnvList_C :: (a -> a -> a) -> ModuleEnv a -> [(Module, a)] -> ModuleEnv a #

plusModuleEnv_C :: (a -> a -> a) -> ModuleEnv a -> ModuleEnv a -> ModuleEnv a #

delModuleEnvList :: ModuleEnv a -> [Module] -> ModuleEnv a #

delModuleEnv :: ModuleEnv a -> Module -> ModuleEnv a #

plusModuleEnv :: ModuleEnv a -> ModuleEnv a -> ModuleEnv a #

lookupModuleEnv :: ModuleEnv a -> Module -> Maybe a #

lookupWithDefaultModuleEnv :: ModuleEnv a -> a -> Module -> a #

mapModuleEnv :: (a -> b) -> ModuleEnv a -> ModuleEnv b #

partitionModuleEnv :: (a -> Bool) -> ModuleEnv a -> (ModuleEnv a, ModuleEnv a) #

alterModuleEnv :: (Maybe a -> Maybe a) -> Module -> ModuleEnv a -> ModuleEnv a #

mkModuleEnv :: [(Module, a)] -> ModuleEnv a #

emptyModuleEnv :: ModuleEnv a #

moduleEnvKeys :: ModuleEnv a -> [Module] #

moduleEnvElts :: ModuleEnv a -> [a] #

moduleEnvToList :: ModuleEnv a -> [(Module, a)] #

unitModuleEnv :: Module -> a -> ModuleEnv a #

isEmptyModuleEnv :: ModuleEnv a -> Bool #

mkModuleSet :: [Module] -> ModuleSet #

extendModuleSet :: ModuleSet -> Module -> ModuleSet #

extendModuleSetList :: ModuleSet -> [Module] -> ModuleSet #

emptyModuleSet :: ModuleSet #

isEmptyModuleSet :: ModuleSet -> Bool #

moduleSetElts :: ModuleSet -> [Module] #

elemModuleSet :: Module -> ModuleSet -> Bool #

intersectModuleSet :: ModuleSet -> ModuleSet -> ModuleSet #

minusModuleSet :: ModuleSet -> ModuleSet -> ModuleSet #

delModuleSet :: ModuleSet -> Module -> ModuleSet #

unionModuleSet :: ModuleSet -> ModuleSet -> ModuleSet #

unionManyModuleSets :: [ModuleSet] -> ModuleSet #

unitModuleSet :: Module -> ModuleSet #

emptyInstalledModuleEnv :: InstalledModuleEnv a #

lookupInstalledModuleEnv :: InstalledModuleEnv a -> InstalledModule -> Maybe a #

extendInstalledModuleEnv :: InstalledModuleEnv a -> InstalledModule -> a -> InstalledModuleEnv a #

filterInstalledModuleEnv :: (InstalledModule -> a -> Bool) -> InstalledModuleEnv a -> InstalledModuleEnv a #

delInstalledModuleEnv :: InstalledModuleEnv a -> InstalledModule -> InstalledModuleEnv a #

installedModuleEnvElts :: InstalledModuleEnv a -> [(InstalledModule, a)] #

mergeInstalledModuleEnv :: (elta -> eltb -> Maybe eltc) -> (InstalledModuleEnv elta -> InstalledModuleEnv eltc) -> (InstalledModuleEnv eltb -> InstalledModuleEnv eltc) -> InstalledModuleEnv elta -> InstalledModuleEnv eltb -> InstalledModuleEnv eltc #

plusInstalledModuleEnv :: (elt -> elt -> elt) -> InstalledModuleEnv elt -> InstalledModuleEnv elt -> InstalledModuleEnv elt #

class HasModule (m :: Type -> Type) where #

Methods

getModule :: m Module #

#### Instances

Instances details

HasModule NatM |
Instance details Defined in GHC.CmmToAsm.Monad Methods getModule :: NatM Module #
HasModule CoreM |
Instance details Defined in GHC.Core.Opt.Monad Methods getModule :: CoreM Module #
HasModule TcS |
Instance details Defined in GHC.Tc.Solver.Monad Methods getModule :: TcS Module #
ContainsModule env => HasModule (IOEnv env) |
Instance details Defined in GHC.Data.IOEnv Methods getModule :: IOEnv env Module #

class ContainsModule t where #

Methods

extractModule :: t -> Module #

#### Instances

Instances details

ContainsModule DsGblEnv |
Instance details Defined in GHC.HsToCore.Types Methods extractModule :: DsGblEnv -> Module #
ContainsModule TcGblEnv |
Instance details Defined in GHC.Tc.Types Methods extractModule :: TcGblEnv -> Module #
ContainsModule gbl => ContainsModule (Env gbl lcl) |
Instance details Defined in GHC.Tc.Types Methods extractModule :: Env gbl lcl -> Module #

moduleIsDefinite :: Module -> Bool #

A `Module` is definite if it has no free holes.

moduleStableString :: Module -> String #

Get a string representation of a `Module` that's unique and stable across recompilations. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal"

stableModuleCmp :: Module -> Module -> Ordering #

This gives a stable ordering, as opposed to the Ord instance which gives an ordering based on the `Unique`s of the components, which may not be stable from run to run of the compiler.

installedModuleEq :: InstalledModule -> Module -> Bool #

Test if a `Module` corresponds to a given `InstalledModule`, modulo instantiation.

getModuleInstantiation :: Module -> (InstalledModule, Maybe InstantiatedModule) #

Given a possibly on-the-fly instantiated module, split it into a `Module` that we definitely can find on-disk, as well as an instantiation if we need to instantiate it on the fly. If the instantiation is `Nothing` no on-the-fly renaming is needed.

getUnitInstantiations :: Unit -> (UnitId, Maybe InstantiatedUnit) #

Return the unit-id this unit is an instance of and the module instantiations (if any).

uninstantiateInstantiatedUnit :: InstantiatedUnit -> InstantiatedUnit #

Remove instantiations of the given instantiated unit

uninstantiateInstantiatedModule :: InstantiatedModule -> InstantiatedModule #

Remove instantiations of the given module instantiated unit

isHoleModule :: GenModule (GenUnit u) -> Bool #

Test if a Module is not instantiated

mkHoleModule :: ModuleName -> GenModule (GenUnit u) #

Create a hole Module

module GHC.Unit.Module.Graph

# Syntax re-exports

data SrcSpanAnn' a #

The 'SrcSpanAnn'' type wraps a normal `SrcSpan`, together with an extra annotation type. This is mapped to a specific `GenLocated` usage in the AST through the `XRec` and `Anno` type families.

#### Instances

Instances details

Functor SrcSpanAnn' # |
Instance details Defined in Development.IDE.GHC.Orphans Methods fmap :: (a -> b) -> SrcSpanAnn' a -> SrcSpanAnn' b # (<$) :: a -> SrcSpanAnn' b -> SrcSpanAnn' a #
Data a => Data (SrcSpanAnn' a) |

Instance details

Defined in GHC.Parser.Annotation

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SrcSpanAnn' a -> c (SrcSpanAnn' a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (SrcSpanAnn' a) #

toConstr :: SrcSpanAnn' a -> Constr #

dataTypeOf :: SrcSpanAnn' a -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (SrcSpanAnn' a)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (SrcSpanAnn' a)) #

gmapT :: (forall b. Data b => b -> b) -> SrcSpanAnn' a -> SrcSpanAnn' a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SrcSpanAnn' a -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SrcSpanAnn' a -> r #

gmapQ :: (forall d. Data d => d -> u) -> SrcSpanAnn' a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SrcSpanAnn' a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SrcSpanAnn' a -> m (SrcSpanAnn' a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcSpanAnn' a -> m (SrcSpanAnn' a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcSpanAnn' a -> m (SrcSpanAnn' a) #

Semigroup an => Semigroup (SrcSpanAnn' an) |
Instance details Defined in GHC.Parser.Annotation Methods (<>) :: SrcSpanAnn' an -> SrcSpanAnn' an -> SrcSpanAnn' an # sconcat :: NonEmpty (SrcSpanAnn' an) -> SrcSpanAnn' an # stimes :: Integral b => b -> SrcSpanAnn' an -> SrcSpanAnn' an #
NFData (SrcSpanAnn' a) # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: SrcSpanAnn' a -> () #
HasLoc (LocatedA a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: LocatedA a -> SrcSpan
HasLoc (LocatedN a) |
Instance details Defined in GHC.Iface.Ext.Ast Methods loc :: LocatedN a -> SrcSpan
HiePass p => HasType (LocatedA (HsBind (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (HsBind (GhcPass p)) -> HieM [HieAST Type]
HiePass p => HasType (LocatedA (HsExpr (GhcPass p))) | This instance tries to construct `HieAST` nodes which include the type of the expression. It is not yet possible to do this efficiently for all expression forms, so we skip filling in the type for those inputs. See Note [Computing the type of every node in the tree]
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (HsExpr (GhcPass p)) -> HieM [HieAST Type]
HiePass p => HasType (LocatedA (Pat (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods getTypeNode :: LocatedA (Pat (GhcPass p)) -> HieM [HieAST Type]
ToHie (LBooleanFormula (LocatedN Name)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LBooleanFormula (LocatedN Name) -> HieM [HieAST Type]
HiePass p => ToHie (BindContext (LocatedA (HsBind (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: BindContext (LocatedA (HsBind (GhcPass p))) -> HieM [HieAST Type]
ToHie (Context (Located a)) => ToHie (Context (LocatedA a)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (LocatedA a) -> HieM [HieAST Type]
ToHie (Context (Located a)) => ToHie (Context (LocatedN a)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Context (LocatedN a) -> HieM [HieAST Type]
ToHie (EvBindContext (LocatedA TcEvBinds)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: EvBindContext (LocatedA TcEvBinds) -> HieM [HieAST Type]
ToHie (IEContext (LocatedA (IE GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA (IE GhcRn)) -> HieM [HieAST Type]
ToHie (IEContext (LocatedA (IEWrappedName GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA (IEWrappedName GhcRn)) -> HieM [HieAST Type]
ToHie (IEContext (LocatedA ModuleName)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: IEContext (LocatedA ModuleName) -> HieM [HieAST Type]
HiePass p => ToHie (PScoped (LocatedA (Pat (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: PScoped (LocatedA (Pat (GhcPass p))) -> HieM [HieAST Type]
(ToHie (RFContext label), ToHie arg, HasLoc arg, Data arg, Data label) => ToHie (RContext (LocatedA (HsFieldBind label arg))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RContext (LocatedA (HsFieldBind label arg)) -> HieM [HieAST Type]
HiePass p => ToHie (RFContext (LocatedAn NoEpAnns (AmbiguousFieldOcc (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RFContext (LocatedAn NoEpAnns (AmbiguousFieldOcc (GhcPass p))) -> HieM [HieAST Type]
HiePass p => ToHie (RFContext (LocatedAn NoEpAnns (FieldOcc (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RFContext (LocatedAn NoEpAnns (FieldOcc (GhcPass p))) -> HieM [HieAST Type]
HiePass p => ToHie (RScoped (LocatedA (IPBind (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedA (IPBind (GhcPass p))) -> HieM [HieAST Type]
(ToHie (LocatedA (body (GhcPass p))), AnnoBody p body, HiePass p) => ToHie (RScoped (LocatedA (Stmt (GhcPass p) (LocatedA (body (GhcPass p)))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedA (Stmt (GhcPass p) (LocatedA (body (GhcPass p))))) -> HieM [HieAST Type]
ToHie (RScoped (LocatedAn NoEpAnns (DerivStrategy GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (DerivStrategy GhcRn)) -> HieM [HieAST Type]
ToHie (RScoped (LocatedAn NoEpAnns (FamilyResultSig GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (FamilyResultSig GhcRn)) -> HieM [HieAST Type]
ToHie (RScoped (LocatedAn NoEpAnns (RuleBndr GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: RScoped (LocatedAn NoEpAnns (RuleBndr GhcRn)) -> HieM [HieAST Type]
HiePass p => ToHie (SigContext (LocatedA (Sig (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: SigContext (LocatedA (Sig (GhcPass p))) -> HieM [HieAST Type]
ToHie (TScoped (LocatedA (HsSigType GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (LocatedA (HsSigType GhcRn)) -> HieM [HieAST Type]
ToHie (TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (FamEqn GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsSigType GhcRn))) -> HieM [HieAST Type]
ToHie (TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TScoped (HsWildCardBndrs GhcRn (LocatedA (HsType GhcRn))) -> HieM [HieAST Type]
Data flag => ToHie (TVScoped (LocatedA (HsTyVarBndr flag GhcRn))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: TVScoped (LocatedA (HsTyVarBndr flag GhcRn)) -> HieM [HieAST Type]
ToHie (LocatedA HsWrapper) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA HsWrapper -> HieM [HieAST Type]
ToHie (LocatedA (FixitySig GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FixitySig GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (AnnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (AnnDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ClsInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ClsInstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ConDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ConDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DataFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DataFamInstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DefaultDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DefaultDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DerivDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DerivDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (DocDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (DocDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (FamilyDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FamilyDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ForeignDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ForeignDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (FunDep GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (FunDep GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (InstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (InstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (RoleAnnotDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RoleAnnotDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (RuleDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (RuleDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (RuleDecls GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (SpliceDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (SpliceDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (StandaloneKindSig GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (StandaloneKindSig GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (TyClDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyClDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (TyFamInstDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (TyFamInstDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (WarnDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (WarnDecls GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (WarnDecls GhcRn) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsCmd (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsCmd (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsExpr (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsExpr (GhcPass p)) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedA (HsUntypedSplice (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsUntypedSplice (GhcPass p)) -> HieM [HieAST Type]
(HiePass p, Data (body (GhcPass p)), AnnoBody p body, ToHie (LocatedA (body (GhcPass p)))) => ToHie (LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (Match (GhcPass p) (LocatedA (body (GhcPass p)))) -> HieM [HieAST Type]
ToHie (LocatedA (ImportDecl GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ImportDecl GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (ConDeclField GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (ConDeclField GhcRn) -> HieM [HieAST Type]
ToHie (LocatedA (HsType GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedA (HsType GhcRn) -> HieM [HieAST Type]
ToHie (LocatedC (DerivClauseTys GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedC (DerivClauseTys GhcRn) -> HieM [HieAST Type]
ToHie (LocatedC [LocatedA (HsType GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedC [LocatedA (HsType GhcRn)] -> HieM [HieAST Type]
ToHie (LocatedL [LocatedA (ConDeclField GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedL [LocatedA (ConDeclField GhcRn)] -> HieM [HieAST Type]
ToHie (LocatedP OverlapMode) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedP OverlapMode -> HieM [HieAST Type]
ToHie (Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)]) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcRn)] -> HieM [HieAST Type]
HasHaddock (LocatedA (ConDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (ConDecl GhcPs) -> HdkA (LocatedA (ConDecl GhcPs))
HasHaddock (LocatedA (HsDecl GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsDecl GhcPs) -> HdkA (LocatedA (HsDecl GhcPs))
HasHaddock (LocatedA (IE GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (IE GhcPs) -> HdkA (LocatedA (IE GhcPs))
HasHaddock (LocatedA (HsSigType GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsSigType GhcPs) -> HdkA (LocatedA (HsSigType GhcPs))
HasHaddock (LocatedA (HsType GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedA (HsType GhcPs) -> HdkA (LocatedA (HsType GhcPs))
HasHaddock (LocatedC (DerivClauseTys GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedC (DerivClauseTys GhcPs) -> HdkA (LocatedC (DerivClauseTys GhcPs))
HasHaddock (LocatedL [LocatedA (IE GhcPs)]) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedL [LocatedA (IE GhcPs)] -> HdkA (LocatedL [LocatedA (IE GhcPs)])
HasHaddock (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)]) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)] -> HdkA (Located [LocatedAn NoEpAnns (HsDerivingClause GhcPs)])
Outputable a => Outputable (SrcSpanAnn' a) |
Instance details Defined in GHC.Parser.Annotation Methods ppr :: SrcSpanAnn' a -> SDoc #
Eq a => Eq (SrcSpanAnn' a) |
Instance details Defined in GHC.Parser.Annotation Methods (==) :: SrcSpanAnn' a -> SrcSpanAnn' a -> Bool # (/=) :: SrcSpanAnn' a -> SrcSpanAnn' a -> Bool #
HasSrcSpan (SrcSpanAnn' ann) # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: SrcSpanAnn' ann -> SrcSpan #
ToHie (LocatedAn NoEpAnns (HsDerivingClause GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (HsDerivingClause GhcRn) -> HieM [HieAST Type]
ToHie (LocatedAn NoEpAnns (InjectivityAnn GhcRn)) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (InjectivityAnn GhcRn) -> HieM [HieAST Type]
(ToHie (LocatedA (body (GhcPass p))), HiePass p, AnnoBody p body) => ToHie (LocatedAn NoEpAnns (GRHS (GhcPass p) (LocatedA (body (GhcPass p))))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) -> HieM [HieAST Type]
HiePass p => ToHie (LocatedAn NoEpAnns (HsCmdTop (GhcPass p))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns (HsCmdTop (GhcPass p)) -> HieM [HieAST Type]
ToHie (LocatedAn NoEpAnns HsIPName) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: LocatedAn NoEpAnns HsIPName -> HieM [HieAST Type]
(ToHie (LocatedA (body (GhcPass p))), HiePass p, AnnoBody p body) => ToHie (GRHSs (GhcPass p) (LocatedA (body (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: GRHSs (GhcPass p) (LocatedA (body (GhcPass p))) -> HieM [HieAST Type]
(HiePass p, AnnoBody p body, ToHie (LocatedA (body (GhcPass p)))) => ToHie (MatchGroup (GhcPass p) (LocatedA (body (GhcPass p)))) |
Instance details Defined in GHC.Iface.Ext.Ast Methods toHie :: MatchGroup (GhcPass p) (LocatedA (body (GhcPass p))) -> HieM [HieAST Type]
HasHaddock (LocatedAn NoEpAnns (HsDerivingClause GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: LocatedAn NoEpAnns (HsDerivingClause GhcPs) -> HdkA (LocatedAn NoEpAnns (HsDerivingClause GhcPs))
NamedThing (Located a) => NamedThing (LocatedAn an a) |
Instance details Defined in GHC.Parser.Annotation Methods getOccName :: LocatedAn an a -> OccName # getName :: LocatedAn an a -> Name #
(Outputable a, Outputable e) => Outputable (GenLocated (SrcSpanAnn' a) e) |
Instance details Defined in GHC.Parser.Annotation Methods ppr :: GenLocated (SrcSpanAnn' a) e -> SDoc #
(Outputable a, OutputableBndr e) => OutputableBndr (GenLocated (SrcSpanAnn' a) e) |
Instance details Defined in GHC.Parser.Annotation Methods pprBndr :: BindingSite -> GenLocated (SrcSpanAnn' a) e -> SDoc # pprPrefixOcc :: GenLocated (SrcSpanAnn' a) e -> SDoc # pprInfixOcc :: GenLocated (SrcSpanAnn' a) e -> SDoc # bndrIsJoin_maybe :: GenLocated (SrcSpanAnn' a) e -> Maybe Int #
HasSrcSpan (GenLocated (SrcSpanAnn' ann) a) # |
Instance details Defined in Development.IDE.GHC.Compat.Core Methods getLoc :: GenLocated (SrcSpanAnn' ann) a -> SrcSpan #
type Anno (LocatedA (IE (GhcPass p))) |
Instance details Defined in GHC.Hs.ImpExp type Anno (LocatedA (IE (GhcPass p))) = SrcSpanAnnA
type Anno (LocatedN Name) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Name) = SrcSpan
type Anno (LocatedN RdrName) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN RdrName) = SrcSpan
type Anno (LocatedN Id) |
Instance details Defined in GHC.Hs.Binds type Anno (LocatedN Id) = SrcSpan
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] = SrcSpanAnnL
type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsExpr (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] |
Instance details Defined in GHC.Hs.Expr type Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] |
Instance details Defined in GHC.Parser.Types type Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
type Anno [LocatedA (IE (GhcPass p))] |
Instance details Defined in GHC.Hs.ImpExp type Anno [LocatedA (IE (GhcPass p))] = SrcSpanAnnL
type Anno [LocatedA (ConDeclField (GhcPass _1))] |
Instance details Defined in GHC.Hs.Decls type Anno [LocatedA (ConDeclField (GhcPass _1))] = SrcSpanAnnL
type Anno [LocatedA (HsType (GhcPass p))] |
Instance details Defined in GHC.Hs.Type type Anno [LocatedA (HsType (GhcPass p))] = SrcSpanAnnC
type Anno [LocatedN Name] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Name] = SrcSpan
type Anno [LocatedN RdrName] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN RdrName] = SrcSpan
type Anno [LocatedN Id] |
Instance details Defined in GHC.Hs.Binds type Anno [LocatedN Id] = SrcSpan
type Anno (FamEqn p (LocatedA (HsType p))) |
Instance details Defined in GHC.Hs.Decls type Anno (FamEqn p (LocatedA (HsType p))) = SrcSpanAnnA
type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcAnn NoEpAnns
type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) = SrcAnn NoEpAnns
type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsCmd (GhcPass p)))) = SrcSpanAnnA
type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) |
Instance details Defined in GHC.Hs.Expr type Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcSpanAnnA
type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA
type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) = SrcSpanAnnA
type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) |
Instance details Defined in GHC.Parser.Types type Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnA
type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) |
Instance details Defined in GHC.Hs.Expr type Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) = SrcSpanAnnA

data HsModule p #

Haskell Module

All we actually declare here is the top-level structure for a module.

Constructors

HsModule

`AnnKeywordId`s

- `AnnModule`,`AnnWhere`
- `AnnOpen`,`AnnSemi`, `AnnClose` for explicit braces and semi around hsmodImports,hsmodDecls if this style is used.

Fields

- hsmodExt :: XCModule p

  HsModule extension point

- hsmodName :: Maybe (XRec p ModuleName)

  `Nothing`: "module X where" is omitted (in which case the next field is Nothing too)

- hsmodExports :: Maybe (XRec p [LIE p])

  Export list

  - `Nothing`: export list omitted, so export everything
  - `Just []`: export nothing
  - `Just [...]`: as you would expect...
  - `AnnKeywordId`s : `AnnOpen` ,`AnnClose`
- hsmodImports :: [LImportDecl p]
- hsmodDecls :: [LHsDecl p]

  Type, class, value, and interface signature decls

XModule !(XXModule p) |

#### Instances

Instances details

NFData (HsModule a) # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: HsModule a -> () #
HasHaddock (Located (HsModule GhcPs)) |
Instance details Defined in GHC.Parser.PostProcess.Haddock Methods addHaddock :: Located (HsModule GhcPs) -> HdkA (Located (HsModule GhcPs))

module GHC.Hs.Binds

module GHC.Parser

mkPrelImports :: ModuleName -> SrcSpan -> Bool -> [LImportDecl GhcPs] -> [LImportDecl GhcPs] #

getOptionsFromFile #

Arguments

:: ParserOpts |
-> FilePath | Input file
-> IO (Messages PsMessage, [Located String]) | Parsed options, if any.

Parse OPTIONS and LANGUAGE pragmas of the source file.

Throws a `SourceError` if flag parsing fails (including unsupported flags.)

getOptions #

Arguments

:: ParserOpts |
-> StringBuffer | Input Buffer
-> FilePath | Source filename. Used for location info.
-> (Messages PsMessage, [Located String]) | warnings and parsed options.

Parse OPTIONS and LANGUAGE pragmas of the source file.

Throws a `SourceError` if flag parsing fails (including unsupported flags.)

toArgs :: RealSrcLoc -> String -> Either String [Located String] #

checkProcessArgsResult :: MonadIO m => [Located String] -> m () #

Complain about non-dynamic flags in OPTIONS pragmas.

Throws a `SourceError` if the input list is non-empty claiming that the input flags are unknown.

data Token #

Constructors

ITas |
ITcase |
ITclass |
ITdata |
ITdefault |
ITderiving |
ITdo (Maybe FastString) |
ITelse |
IThiding |
ITforeign |
ITif |
ITimport |
ITin |
ITinfix |
ITinfixl |
ITinfixr |
ITinstance |
ITlet |
ITmodule |
ITnewtype |
ITof |
ITqualified |
ITthen |
ITtype |
ITwhere |
ITforall IsUnicodeSyntax |
ITexport |
ITlabel |
ITdynamic |
ITsafe |
ITinterruptible |
ITunsafe |
ITstdcallconv |
ITccallconv |
ITcapiconv |
ITprimcallconv |
ITjavascriptcallconv |
ITmdo (Maybe FastString) |
ITfamily |
ITrole |
ITgroup |
ITby |
ITusing |
ITpattern |
ITstatic |
ITstock |
ITanyclass |
ITvia |
ITunit |
ITsignature |
ITdependency |
ITrequires |
ITinline_prag SourceText InlineSpec RuleMatchInfo |
ITopaque_prag SourceText |
ITspec_prag SourceText |
ITspec_inline_prag SourceText Bool |
ITsource_prag SourceText |
ITrules_prag SourceText |
ITwarning_prag SourceText |
ITdeprecated_prag SourceText |
ITline_prag SourceText |
ITcolumn_prag SourceText |
ITscc_prag SourceText |
ITunpack_prag SourceText |
ITnounpack_prag SourceText |
ITann_prag SourceText |
ITcomplete_prag SourceText |
ITclose_prag |
IToptions_prag String |
ITinclude_prag String |
ITlanguage_prag |
ITminimal_prag SourceText |
IToverlappable_prag SourceText |
IToverlapping_prag SourceText |
IToverlaps_prag SourceText |
ITincoherent_prag SourceText |
ITctype SourceText |
ITcomment_line_prag |
ITdotdot |
ITcolon |
ITdcolon IsUnicodeSyntax |
ITequal |
ITlam |
ITlcase |
ITlcases |
ITvbar |
ITlarrow IsUnicodeSyntax |
ITrarrow IsUnicodeSyntax |
ITdarrow IsUnicodeSyntax |
ITlolly |
ITminus |
ITprefixminus |
ITbang |
ITtilde |
ITat |
ITtypeApp |
ITpercent |
ITstar IsUnicodeSyntax |
ITdot |
ITproj Bool |
ITbiglam |
ITocurly |
ITccurly |
ITvocurly |
ITvccurly |
ITobrack |
ITopabrack |
ITcpabrack |
ITcbrack |
IToparen |
ITcparen |
IToubxparen |
ITcubxparen |
ITsemi |
ITcomma |
ITunderscore |
ITbackquote |
ITsimpleQuote |
ITvarid FastString |
ITconid FastString |
ITvarsym FastString |
ITconsym FastString |
ITqvarid (FastString, FastString) |
ITqconid (FastString, FastString) |
ITqvarsym (FastString, FastString) |
ITqconsym (FastString, FastString) |
ITdupipvarid FastString |
ITlabelvarid SourceText FastString |
ITchar SourceText Char |
ITstring SourceText FastString |
ITinteger IntegralLit |
ITrational FractionalLit |
ITprimchar SourceText Char |
ITprimstring SourceText ByteString |
ITprimint SourceText Integer |
ITprimword SourceText Integer |
ITprimint8 SourceText Integer |
ITprimint16 SourceText Integer |
ITprimint32 SourceText Integer |
ITprimint64 SourceText Integer |
ITprimword8 SourceText Integer |
ITprimword16 SourceText Integer |
ITprimword32 SourceText Integer |
ITprimword64 SourceText Integer |
ITprimfloat FractionalLit |
ITprimdouble FractionalLit |
ITopenExpQuote HasE IsUnicodeSyntax |
ITopenPatQuote |
ITopenDecQuote |
ITopenTypQuote |
ITcloseQuote IsUnicodeSyntax |
ITopenTExpQuote HasE |
ITcloseTExpQuote |
ITdollar |
ITdollardollar |
ITtyQuote |
ITquasiQuote (FastString, FastString, PsSpan) |
ITqQuasiQuote (FastString, FastString, FastString, PsSpan) |
ITproc |
ITrec |

IToparenbar IsUnicodeSyntax

    (|

ITcparenbar IsUnicodeSyntax

    |)

ITlarrowtail IsUnicodeSyntax

    -<

ITrarrowtail IsUnicodeSyntax

    >-

ITLarrowtail IsUnicodeSyntax

    -<<

ITRarrowtail IsUnicodeSyntax

    >>-

ITunknown String | Used when the lexer can't make sense of it
ITeof | end of file token
ITdocComment HsDocString PsSpan | The HsDocString contains more details about what this is and how to pretty print it
ITdocOptions String PsSpan | doc options (prune, ignore-exports, etc)
ITlineComment String PsSpan | comment starting by "--"
ITblockComment String PsSpan | comment in {- -}

#### Instances

Instances details

Show Token |
Instance details Defined in GHC.Parser.Lexer Methods showsPrec :: Int -> Token -> ShowS # show :: Token -> String # showList :: [Token] -> ShowS #
Outputable Token |
Instance details Defined in GHC.Parser.Lexer Methods ppr :: Token -> SDoc #

data PState #

Constructors

PState |

Fields

- buffer :: StringBuffer
- options :: ParserOpts
- warnings :: Messages PsMessage
- errors :: Messages PsMessage
- tab_first :: Maybe RealSrcSpan
- tab_count :: !Word
- last_tk :: Maybe (PsLocated Token)
- prev_loc :: PsSpan
- last_loc :: PsSpan
- last_len :: !Int
- loc :: PsLoc
- context :: [LayoutContext]
- lex_state :: [Int]
- srcfiles :: [FastString]
- alr_pending_implicit_tokens :: [PsLocated Token]
- alr_next_token :: Maybe (PsLocated Token)
- alr_last_loc :: PsSpan
- alr_context :: [ALRContext]
- alr_expecting_ocurly :: Maybe ALRLayout
- alr_justClosedExplicitLetBlock :: Bool
- eof_pos :: Maybe (Pair RealSrcSpan RealSrcSpan)
- header_comments :: Maybe [LEpaComment]
- comment_q :: [LEpaComment]
- hdk_comments :: OrdList (PsLocated HdkComment)

newtype P a #

The parsing monad, isomorphic to `StateT PState Maybe`.

Constructors

P |

Fields

- unP :: PState -> ParseResult a

#### Instances

Instances details

Applicative P |
Instance details Defined in GHC.Parser.Lexer Methods pure :: a -> P a # (<*>) :: P (a -> b) -> P a -> P b # liftA2 :: (a -> b -> c) -> P a -> P b -> P c # (*>) :: P a -> P b -> P b # (<*) :: P a -> P b -> P a #
Functor P |
Instance details Defined in GHC.Parser.Lexer Methods fmap :: (a -> b) -> P a -> P b # (<$) :: a -> P b -> P a #
Monad P |
Instance details Defined in GHC.Parser.Lexer Methods (>>=) :: P a -> (a -> P b) -> P b # (>>) :: P a -> P b -> P b # return :: a -> P a #
MonadP P |
Instance details Defined in GHC.Parser.Lexer Methods addError :: MsgEnvelope PsMessage -> P () # addWarning :: MsgEnvelope PsMessage -> P () # addFatalError :: MsgEnvelope PsMessage -> P a # getBit :: ExtBits -> P Bool # allocateCommentsP :: RealSrcSpan -> P EpAnnComments # allocatePriorCommentsP :: RealSrcSpan -> P EpAnnComments # allocateFinalCommentsP :: RealSrcSpan -> P EpAnnComments #

class Monad m => MonadP (m :: Type -> Type) where #

An mtl-style class for monads that support parsing-related operations. For example, sometimes we make a second pass over the parsing results to validate, disambiguate, or rearrange them, and we do so in the PV monad which cannot consume input but can report parsing errors, check for extension bits, and accumulate parsing annotations. Both P and PV are instances of MonadP.

MonadP grants us convenient overloading. The other option is to have separate operations for each monad: addErrorP vs addErrorPV, getBitP vs getBitPV, and so on.

Methods

addError :: MsgEnvelope PsMessage -> m () #

Add a non-fatal error. Use this when the parser can produce a result despite the error.

For example, when GHC encounters a `forall` in a type, but `-XExplicitForAll` is disabled, the parser constructs `ForAllTy` as if `-XExplicitForAll` was enabled, adding a non-fatal error to the accumulator.

Control flow wise, non-fatal errors act like warnings: they are added to the accumulator and parsing continues. This allows GHC to report more than one parse error per file.

addWarning :: MsgEnvelope PsMessage -> m () #

Add a warning to the accumulator. Use `getPsMessages` to get the accumulated warnings.

addFatalError :: MsgEnvelope PsMessage -> m a #

Add a fatal error. This will be the last error reported by the parser, and the parser will not produce any result, ending in a `PFailed` state.

getBit :: ExtBits -> m Bool #

Check if a given flag is currently set in the bitmap.

allocateCommentsP :: RealSrcSpan -> m EpAnnComments #

Go through the `comment_q` in `PState` and remove all comments that belong within the given span

allocatePriorCommentsP :: RealSrcSpan -> m EpAnnComments #

Go through the `comment_q` in `PState` and remove all comments that come before or within the given span

allocateFinalCommentsP :: RealSrcSpan -> m EpAnnComments #

Go through the `comment_q` in `PState` and remove all comments that come after the given span

#### Instances

Instances details

MonadP P |
Instance details Defined in GHC.Parser.Lexer Methods addError :: MsgEnvelope PsMessage -> P () # addWarning :: MsgEnvelope PsMessage -> P () # addFatalError :: MsgEnvelope PsMessage -> P a # getBit :: ExtBits -> P Bool # allocateCommentsP :: RealSrcSpan -> P EpAnnComments # allocatePriorCommentsP :: RealSrcSpan -> P EpAnnComments # allocateFinalCommentsP :: RealSrcSpan -> P EpAnnComments #
MonadP PV |

Instance details

Defined in GHC.Parser.PostProcess

Methods

addError :: MsgEnvelope PsMessage -> PV () #

addWarning :: MsgEnvelope PsMessage -> PV () #

addFatalError :: MsgEnvelope PsMessage -> PV a #

getBit :: ExtBits -> PV Bool #

allocateCommentsP :: RealSrcSpan -> PV EpAnnComments #

allocatePriorCommentsP :: RealSrcSpan -> PV EpAnnComments #

allocateFinalCommentsP :: RealSrcSpan -> PV EpAnnComments #

data ExtBits #

Various boolean flags, mostly language extensions, that impact lexing and parsing. Note that a handful of these can change during lexing/parsing.

Constructors

FfiBit |
InterruptibleFfiBit |
CApiFfiBit |
ArrowsBit |
ThBit |
ThQuotesBit |
IpBit |
OverloadedLabelsBit |
ExplicitForallBit |
BangPatBit |
PatternSynonymsBit |
HaddockBit |
MagicHashBit |
RecursiveDoBit |
QualifiedDoBit |
UnicodeSyntaxBit |
UnboxedParensBit |
DatatypeContextsBit |
MonadComprehensionsBit |
TransformComprehensionsBit |
QqBit |
RawTokenStreamBit |
AlternativeLayoutRuleBit |
ALRTransitionalBit |
RelaxedLayoutBit |
NondecreasingIndentationBit |
SafeHaskellBit |
TraditionalRecordSyntaxBit |
ExplicitNamespacesBit |
LambdaCaseBit |
BinaryLiteralsBit |
NegativeLiteralsBit |
HexFloatLiteralsBit |
StaticPointersBit |
NumericUnderscoresBit |
StarIsTypeBit |
BlockArgumentsBit |
NPlusKPatternsBit |
DoAndIfThenElseBit |
MultiWayIfBit |
GadtSyntaxBit |
ImportQualifiedPostBit |
LinearTypesBit |
NoLexicalNegationBit |
OverloadedRecordDotBit |
OverloadedRecordUpdateBit |
ExtendedLiteralsBit |
InRulePragBit |
InNestedCommentBit |
UsePosPragsBit | If this is enabled, '{-# LINE ... -#}' and '{-# COLUMN ... #-}' update the internal position. Otherwise, those pragmas are lexed as tokens of their own.

#### Instances

Instances details

Enum ExtBits |
Instance details Defined in GHC.Parser.Lexer Methods succ :: ExtBits -> ExtBits # pred :: ExtBits -> ExtBits # toEnum :: Int -> ExtBits # fromEnum :: ExtBits -> Int # enumFrom :: ExtBits -> [ExtBits] # enumFromThen :: ExtBits -> ExtBits -> [ExtBits] # enumFromTo :: ExtBits -> ExtBits -> [ExtBits] # enumFromThenTo :: ExtBits -> ExtBits -> ExtBits -> [ExtBits] #

data HdkComment #

Haddock comment as produced by the lexer. These are accumulated in `PState` and then processed in GHC.Parser.PostProcess.Haddock. The location of the `HsDocString`s spans over the contents of the docstring - i.e. it does not include the decorator ("-- |", "{-|" etc.)

Constructors

HdkCommentNext HsDocString |
HdkCommentPrev HsDocString |
HdkCommentNamed String HsDocString |
HdkCommentSection Int HsDocString |

#### Instances

Instances details

Show HdkComment |
Instance details Defined in GHC.Parser.Lexer Methods showsPrec :: Int -> HdkComment -> ShowS # show :: HdkComment -> String # showList :: [HdkComment] -> ShowS #

data ParserOpts #

Parser options.

See `mkParserOpts` to construct this.

Constructors

ParserOpts |

Fields

- pExtsBitmap :: !ExtsBitmap

  bitmap of permitted extensions

- pDiagOpts :: !DiagOpts

  Options to construct diagnostic messages.

- pSupportedExts :: [String]

  supported extensions (only used for suggestions in error messages)

data ParseResult a :: TYPE ('SumRep '['TupleRep '[LiftedRep, LiftedRep], LiftedRep]) where #

The result of running a parser.

Bundled Patterns

pattern PFailed :: PState -> ParseResult a | The parser has consumed a (possibly empty) prefix of the input and failed. The carried parsing state can be used to resume parsing. It is the state right before failure, including the fatal parse error. `getPsMessages` and `getPsErrorMessages` must return a non-empty bag of errors.
pattern POk :: PState -> a -> ParseResult a | The parser has consumed a (possibly empty) prefix of the input and produced a result. Use `getPsMessages` to check for accumulated warnings and non-fatal errors. The carried parsing state can be used to resume parsing.

warnopt :: WarningFlag -> ParserOpts -> Bool #

Test whether a `WarningFlag` is set

failMsgP :: (SrcSpan -> MsgEnvelope PsMessage) -> P a #

failLocMsgP :: RealSrcLoc -> RealSrcLoc -> (SrcSpan -> MsgEnvelope PsMessage) -> P a #

getPState :: P PState #

setSrcLoc :: RealSrcLoc -> P () #

getRealSrcLoc :: P RealSrcLoc #

setLastToken :: PsSpan -> Int -> P () #

adjustChar :: Char -> Word8 #

nextIsEOF :: P Bool #

pushLexState :: Int -> P () #

popLexState :: P Int #

getLexState :: P Int #

activeContext :: P Bool #

xtest :: ExtBits -> ExtsBitmap -> Bool #

xset :: ExtBits -> ExtsBitmap -> ExtsBitmap #

xunset :: ExtBits -> ExtsBitmap -> ExtsBitmap #

mkParserOpts #

Arguments

:: EnumSet Extension | permitted language extensions enabled
-> DiagOpts | diagnostic options
-> [String] | Supported Languages and Extensions
-> Bool | are safe imports on?
-> Bool | keeping Haddock comment tokens
-> Bool | keep regular comment tokens
-> Bool | If this is enabled, '{-# LINE ... -#}' and '{-# COLUMN ... #-}' update the internal position kept by the parser. Otherwise, those pragmas are lexed as `ITline_prag` and `ITcolumn_prag` tokens.
-> ParserOpts |

Given exactly the information needed, set up the `ParserOpts`

disableHaddock :: ParserOpts -> ParserOpts #

initPragState :: ParserOpts -> StringBuffer -> RealSrcLoc -> PState #

Set parser options for parsing OPTIONS pragmas

getCommentsFor :: MonadP m => SrcSpan -> m EpAnnComments #

getPriorCommentsFor :: MonadP m => SrcSpan -> m EpAnnComments #

getFinalCommentsFor :: MonadP m => SrcSpan -> m EpAnnComments #

getEofPos :: P (Maybe (Pair RealSrcSpan RealSrcSpan)) #

addPsMessage :: SrcSpan -> PsMessage -> P () #

getPsErrorMessages :: PState -> Messages PsMessage #

Get a bag of the errors that have been accumulated so far. Does not take -Werror into account.

popContext :: P () #

pushModuleContext :: P () #

srcParseFail :: P a #

lexer :: Bool -> (Located Token -> P a) -> P a #

lexerDbg :: Bool -> (Located Token -> P a) -> P a #

lexTokenStream :: ParserOpts -> StringBuffer -> RealSrcLoc -> ParseResult [Located Token] #

mkParensEpAnn :: RealSrcSpan -> (AddEpAnn, AddEpAnn) #

Given a `RealSrcSpan` that surrounds a `HsPar` or `HsParTy`, generate `AddEpAnn` values for the opening and closing bordering on the start and end of the span

allocateComments :: RealSrcSpan -> [LEpaComment] -> ([LEpaComment], [LEpaComment]) #

allocatePriorComments :: RealSrcSpan -> [LEpaComment] -> Maybe [LEpaComment] -> (Maybe [LEpaComment], [LEpaComment], [LEpaComment]) #

allocateFinalComments :: RealSrcSpan -> [LEpaComment] -> Maybe [LEpaComment] -> (Maybe [LEpaComment], [LEpaComment], [LEpaComment]) #

commentToAnnotation :: RealLocated Token -> LEpaComment #

module GHC.Utils.Panic

data CompileReason #

Constructors

MustCompile | The .hs file has been touched, or the .o/.hi file does not exist
RecompBecause !RecompReason | The .o/.hi files are up to date, but something else has changed to force recompilation; the String says what (one-line summary)

#### Instances

Instances details

Outputable CompileReason |
Instance details Defined in GHC.Iface.Recomp Methods ppr :: CompileReason -> SDoc #
Eq CompileReason |
Instance details Defined in GHC.Iface.Recomp Methods (==) :: CompileReason -> CompileReason -> Bool # (/=) :: CompileReason -> CompileReason -> Bool #

hsc_type_env_vars :: HscEnv -> KnotVars (IORef TypeEnv) #

Used for one-shot compilation only, to initialise the `IfGblEnv`. See `tcg_type_env_var` for `TcGblEnv`. See also Note [hsc_type_env_var hack]

hscUpdateHUG :: (HomeUnitGraph -> HomeUnitGraph) -> HscEnv -> HscEnv #

hsc_HUG :: HscEnv -> HomeUnitGraph #

data GhcMessage where #

The umbrella type that encompasses all the different messages that GHC might output during the different compilation stages. See Note [GhcMessage].

Constructors

GhcPsMessage :: PsMessage -> GhcMessage | A message from the parsing phase.
GhcTcRnMessage :: TcRnMessage -> GhcMessage | A message from typecheck/renaming phase.
GhcDsMessage :: DsMessage -> GhcMessage | A message from the desugaring (HsToCore) phase.
GhcDriverMessage :: DriverMessage -> GhcMessage | A message from the driver.

GhcUnknownMessage :: UnknownDiagnostic (DiagnosticOpts GhcMessage) -> GhcMessage

An "escape" hatch which can be used when we don't know the source of the message or if the message is not one of the typed ones. The `Diagnostic` and `Typeable` constraints ensure that if we know, at pattern-matching time, the originating type, we can attempt a cast and access the fully-structured error. This would be the case for a GHC plugin that offers a domain-specific error type but that doesn't want to place the burden on IDEs/application code to "know" it. The `Diagnostic` constraint ensures that worst case scenario we can still render this into something which can be eventually converted into a `DecoratedSDoc`.

#### Instances

Instances details

Generic GhcMessage |

Instance details

Defined in GHC.Driver.Errors.Types

Associated Types

type Rep GhcMessage |

Instance details

Defined in GHC.Driver.Errors.Types

type Rep GhcMessage = D1 ('MetaData "GhcMessage" "GHC.Driver.Errors.Types" "ghc-9.8.2-inplace" 'False) ((C1 ('MetaCons "GhcPsMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PsMessage)) :+: C1 ('MetaCons "GhcTcRnMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TcRnMessage))) :+: (C1 ('MetaCons "GhcDsMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DsMessage)) :+: (C1 ('MetaCons "GhcDriverMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DriverMessage)) :+: C1 ('MetaCons "GhcUnknownMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (UnknownDiagnostic (DiagnosticOpts GhcMessage)))))))

Methods

from :: GhcMessage -> Rep GhcMessage x #

to :: Rep GhcMessage x -> GhcMessage #

type Rep GhcMessage |

Instance details

Defined in GHC.Driver.Errors.Types

type Rep GhcMessage = D1 ('MetaData "GhcMessage" "GHC.Driver.Errors.Types" "ghc-9.8.2-inplace" 'False) ((C1 ('MetaCons "GhcPsMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PsMessage)) :+: C1 ('MetaCons "GhcTcRnMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TcRnMessage))) :+: (C1 ('MetaCons "GhcDsMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DsMessage)) :+: (C1 ('MetaCons "GhcDriverMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DriverMessage)) :+: C1 ('MetaCons "GhcUnknownMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (UnknownDiagnostic (DiagnosticOpts GhcMessage)))))))

type DiagnosticOpts GhcMessage |
Instance details Defined in GHC.Driver.Errors.Ppr type DiagnosticOpts GhcMessage = GhcMessageOpts

getKey :: Unique -> Int #

module GHC.Driver.Env.KnotVars

module GHC.Linker.Types

module GHC.Types.Unique.Map

module GHC.Utils.TmpFs

module GHC.Unit.Finder.Types

module GHC.Unit.Env

module GHC.Driver.Phases

data Extension #

The language extensions known to GHC.

Note that there is an orphan `Binary` instance for this type supplied by the GHC.LanguageExtensions module provided by `ghc-boot`. We can't provide here as this would require adding transitive dependencies to the `template-haskell` package, which must have a minimal dependency set.

Constructors

OverlappingInstances |
UndecidableInstances |
IncoherentInstances |
UndecidableSuperClasses |
MonomorphismRestriction |
MonoLocalBinds |
DeepSubsumption |
RelaxedPolyRec |
ExtendedDefaultRules |
ForeignFunctionInterface |
UnliftedFFITypes |
InterruptibleFFI |
CApiFFI |
GHCForeignImportPrim |
JavaScriptFFI |
ParallelArrays |
Arrows |
TemplateHaskell |
TemplateHaskellQuotes |
QualifiedDo |
QuasiQuotes |
ImplicitParams |
ImplicitPrelude |
ScopedTypeVariables |
AllowAmbiguousTypes |
UnboxedTuples |
UnboxedSums |
UnliftedNewtypes |
UnliftedDatatypes |
BangPatterns |
TypeFamilies |
TypeFamilyDependencies |
TypeInType |
OverloadedStrings |
OverloadedLists |
NumDecimals |
DisambiguateRecordFields |
RecordWildCards |
NamedFieldPuns |
ViewPatterns |
GADTs |
GADTSyntax |
NPlusKPatterns |
DoAndIfThenElse |
BlockArguments |
RebindableSyntax |
ConstraintKinds |
PolyKinds |
DataKinds |
TypeData |
InstanceSigs |
ApplicativeDo |
LinearTypes |
StandaloneDeriving |
DeriveDataTypeable |
AutoDeriveTypeable |
DeriveFunctor |
DeriveTraversable |
DeriveFoldable |
DeriveGeneric |
DefaultSignatures |
DeriveAnyClass |
DeriveLift |
DerivingStrategies |
DerivingVia |
TypeSynonymInstances |
FlexibleContexts |
FlexibleInstances |
ConstrainedClassMethods |
MultiParamTypeClasses |
NullaryTypeClasses |
FunctionalDependencies |
UnicodeSyntax |
ExistentialQuantification |
MagicHash |
EmptyDataDecls |
KindSignatures |
RoleAnnotations |
ParallelListComp |
TransformListComp |
MonadComprehensions |
GeneralizedNewtypeDeriving |
RecursiveDo |
PostfixOperators |
TupleSections |
PatternGuards |
LiberalTypeSynonyms |
RankNTypes |
ImpredicativeTypes |
TypeOperators |
ExplicitNamespaces |
PackageImports |
ExplicitForAll |
AlternativeLayoutRule |
AlternativeLayoutRuleTransitional |
DatatypeContexts |
NondecreasingIndentation |
RelaxedLayout |
TraditionalRecordSyntax |
LambdaCase |
MultiWayIf |
BinaryLiterals |
NegativeLiterals |
HexFloatLiterals |
DuplicateRecordFields |
OverloadedLabels |
EmptyCase |
PatternSynonyms |
PartialTypeSignatures |
NamedWildCards |
StaticPointers |
TypeApplications |
Strict |
StrictData |
EmptyDataDeriving |
NumericUnderscores |
QuantifiedConstraints |
StarIsType |
ImportQualifiedPost |
CUSKs |
StandaloneKindSignatures |
LexicalNegation |
FieldSelectors |
OverloadedRecordDot |
OverloadedRecordUpdate |
TypeAbstractions |
ExtendedLiterals |

#### Instances

Instances details

Bounded Extension |
Instance details Defined in GHC.LanguageExtensions.Type Methods minBound :: Extension # maxBound :: Extension #
Enum Extension |

Instance details

Defined in GHC.LanguageExtensions.Type

Methods

succ :: Extension -> Extension #

pred :: Extension -> Extension #

toEnum :: Int -> Extension #

fromEnum :: Extension -> Int #

enumFrom :: Extension -> [Extension] #

enumFromThen :: Extension -> Extension -> [Extension] #

enumFromTo :: Extension -> Extension -> [Extension] #

enumFromThenTo :: Extension -> Extension -> Extension -> [Extension] #

Generic Extension |

Instance details

Defined in GHC.LanguageExtensions.Type

Associated Types

type Rep Extension |

Instance details

Defined in GHC.LanguageExtensions.Type

type Rep Extension = D1 ('MetaData "Extension" "GHC.LanguageExtensions.Type" "ghc-boot-th-9.8.2-inplace" 'False) (((((((C1 ('MetaCons "Cpp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverlappingInstances" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UndecidableInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IncoherentInstances" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UndecidableSuperClasses" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MonomorphismRestriction" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MonoLocalBinds" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeepSubsumption" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "RelaxedPolyRec" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExtendedDefaultRules" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ForeignFunctionInterface" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnliftedFFITypes" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "InterruptibleFFI" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CApiFFI" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "GHCForeignImportPrim" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JavaScriptFFI" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "ParallelArrays" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Arrows" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TemplateHaskell" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TemplateHaskellQuotes" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "QualifiedDo" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "QuasiQuotes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ImplicitParams" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImplicitPrelude" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ScopedTypeVariables" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AllowAmbiguousTypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UnboxedTuples" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnboxedSums" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UnliftedNewtypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnliftedDatatypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BangPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeFamilies" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: (((((C1 ('MetaCons "TypeFamilyDependencies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeInType" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OverloadedStrings" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverloadedLists" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NumDecimals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DisambiguateRecordFields" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RecordWildCards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NamedFieldPuns" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ViewPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "GADTs" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "GADTSyntax" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NPlusKPatterns" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "DoAndIfThenElse" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BlockArguments" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RebindableSyntax" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstraintKinds" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "PolyKinds" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DataKinds" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InstanceSigs" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ApplicativeDo" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LinearTypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "StandaloneDeriving" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveDataTypeable" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "AutoDeriveTypeable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveFunctor" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DeriveTraversable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveFoldable" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "DeriveGeneric" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DefaultSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DeriveAnyClass" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveLift" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: ((((((C1 ('MetaCons "DerivingStrategies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DerivingVia" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeSynonymInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FlexibleContexts" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "FlexibleInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstrainedClassMethods" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MultiParamTypeClasses" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NullaryTypeClasses" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "FunctionalDependencies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnicodeSyntax" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ExistentialQuantification" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MagicHash" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "EmptyDataDecls" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KindSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RoleAnnotations" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ParallelListComp" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "TransformListComp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MonadComprehensions" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "GeneralizedNewtypeDeriving" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RecursiveDo" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PostfixOperators" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TupleSections" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PatternGuards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LiberalTypeSynonyms" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "RankNTypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImpredicativeTypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeOperators" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExplicitNamespaces" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PackageImports" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExplicitForAll" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "AlternativeLayoutRule" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AlternativeLayoutRuleTransitional" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: (((((C1 ('MetaCons "DatatypeContexts" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NondecreasingIndentation" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RelaxedLayout" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TraditionalRecordSyntax" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LambdaCase" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MultiWayIf" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BinaryLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NegativeLiterals" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "HexFloatLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DuplicateRecordFields" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OverloadedLabels" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EmptyCase" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PatternSynonyms" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PartialTypeSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NamedWildCards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StaticPointers" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "TypeApplications" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Strict" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "StrictData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EmptyDataDeriving" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NumericUnderscores" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "QuantifiedConstraints" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "StarIsType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImportQualifiedPost" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "CUSKs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StandaloneKindSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LexicalNegation" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FieldSelectors" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "OverloadedRecordDot" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverloadedRecordUpdate" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeAbstractions" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExtendedLiterals" 'PrefixI 'False) (U1 :: Type -> Type))))))))

Methods

from :: Extension -> Rep Extension x #

to :: Rep Extension x -> Extension #

Show Extension |
Instance details Defined in GHC.LanguageExtensions.Type Methods showsPrec :: Int -> Extension -> ShowS # show :: Extension -> String # showList :: [Extension] -> ShowS #
NFData Extension # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: Extension -> () #
Outputable Extension |
Instance details Defined in GHC.Utils.Outputable Methods ppr :: Extension -> SDoc #
Eq Extension |
Instance details Defined in GHC.LanguageExtensions.Type Methods (==) :: Extension -> Extension -> Bool # (/=) :: Extension -> Extension -> Bool #
Ord Extension |
Instance details Defined in GHC.LanguageExtensions.Type Methods compare :: Extension -> Extension -> Ordering # (<) :: Extension -> Extension -> Bool # (<=) :: Extension -> Extension -> Bool # (>) :: Extension -> Extension -> Bool # (>=) :: Extension -> Extension -> Bool # max :: Extension -> Extension -> Extension # min :: Extension -> Extension -> Extension #
type Rep Extension |

Instance details

Defined in GHC.LanguageExtensions.Type

type Rep Extension = D1 ('MetaData "Extension" "GHC.LanguageExtensions.Type" "ghc-boot-th-9.8.2-inplace" 'False) (((((((C1 ('MetaCons "Cpp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverlappingInstances" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UndecidableInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IncoherentInstances" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UndecidableSuperClasses" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MonomorphismRestriction" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MonoLocalBinds" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeepSubsumption" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "RelaxedPolyRec" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExtendedDefaultRules" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ForeignFunctionInterface" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnliftedFFITypes" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "InterruptibleFFI" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CApiFFI" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "GHCForeignImportPrim" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JavaScriptFFI" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "ParallelArrays" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Arrows" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TemplateHaskell" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TemplateHaskellQuotes" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "QualifiedDo" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "QuasiQuotes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ImplicitParams" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImplicitPrelude" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ScopedTypeVariables" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AllowAmbiguousTypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UnboxedTuples" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnboxedSums" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UnliftedNewtypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnliftedDatatypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BangPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeFamilies" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: (((((C1 ('MetaCons "TypeFamilyDependencies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeInType" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OverloadedStrings" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverloadedLists" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NumDecimals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DisambiguateRecordFields" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RecordWildCards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NamedFieldPuns" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ViewPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "GADTs" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "GADTSyntax" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NPlusKPatterns" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "DoAndIfThenElse" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BlockArguments" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RebindableSyntax" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstraintKinds" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "PolyKinds" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DataKinds" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InstanceSigs" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ApplicativeDo" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LinearTypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "StandaloneDeriving" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveDataTypeable" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "AutoDeriveTypeable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveFunctor" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DeriveTraversable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveFoldable" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "DeriveGeneric" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DefaultSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DeriveAnyClass" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveLift" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: ((((((C1 ('MetaCons "DerivingStrategies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DerivingVia" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeSynonymInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FlexibleContexts" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "FlexibleInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstrainedClassMethods" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MultiParamTypeClasses" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NullaryTypeClasses" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "FunctionalDependencies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnicodeSyntax" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ExistentialQuantification" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MagicHash" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "EmptyDataDecls" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KindSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RoleAnnotations" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ParallelListComp" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "TransformListComp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MonadComprehensions" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "GeneralizedNewtypeDeriving" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RecursiveDo" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PostfixOperators" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TupleSections" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PatternGuards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LiberalTypeSynonyms" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "RankNTypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImpredicativeTypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeOperators" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExplicitNamespaces" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PackageImports" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExplicitForAll" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "AlternativeLayoutRule" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AlternativeLayoutRuleTransitional" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: (((((C1 ('MetaCons "DatatypeContexts" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NondecreasingIndentation" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RelaxedLayout" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TraditionalRecordSyntax" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LambdaCase" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MultiWayIf" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BinaryLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NegativeLiterals" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "HexFloatLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DuplicateRecordFields" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OverloadedLabels" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EmptyCase" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PatternSynonyms" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PartialTypeSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NamedWildCards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StaticPointers" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "TypeApplications" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Strict" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "StrictData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EmptyDataDeriving" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NumericUnderscores" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "QuantifiedConstraints" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "StarIsType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImportQualifiedPost" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "CUSKs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StandaloneKindSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LexicalNegation" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FieldSelectors" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "OverloadedRecordDot" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverloadedRecordUpdate" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeAbstractions" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExtendedLiterals" 'PrefixI 'False) (U1 :: Type -> Type))))))))

mkCgInteractiveGuts :: CgGuts -> CgInteractiveGuts #

justBytecode :: Linkable -> HomeModLinkable #

justObjects :: Linkable -> HomeModLinkable #

emptyHomeModInfoLinkable :: HomeModLinkable #

homeModInfoByteCode :: HomeModInfo -> Maybe Linkable #

homeModInfoObject :: HomeModInfo -> Maybe Linkable #

groupOrigin :: MatchGroup p body -> XMG p body #

isVisibleFunArg :: FunTyFlag -> Bool #

lookupGlobalRdrEnv :: GlobalRdrEnvX GREInfo -> OccName -> [GlobalRdrEltX GREInfo] #