- IdInfo, -- abstract
- noIdInfo,
- boringIdInfo,
- ppIdInfo,
- applySubstToIdInfo, apply_to_IdInfo, -- not for general use, please
-
- OptIdInfo(..), -- class; for convenience only
- -- all the *Infos herein are instances of it
-
- -- component "id infos"; also abstract:
- SrcLoc,
- getSrcLocIdInfo,
-
- ArityInfo,
- mkArityInfo, unknownArity, arityMaybe,
-
- DemandInfo,
- mkDemandInfo,
- willBeDemanded,
-
- MatchEnv, -- the SpecEnv
- StrictnessInfo(..), -- non-abstract
- Demand(..), -- non-abstract
-
- wwLazy, wwStrict, wwUnpack, wwPrim, wwEnum,
- indicatesWorker, nonAbsentArgs,
- mkStrictnessInfo, mkBottomStrictnessInfo,
- getWrapperArgTypeCategories,
- getWorkerId,
- workerExists,
- bottomIsGuaranteed,
-
- mkUnfolding,
- noInfo_UF, getInfo_UF, addInfo_UF, -- to avoid instance virus
-
- UpdateInfo,
- mkUpdateInfo,
- UpdateSpec(..),
- updateInfoMaybe,
-
- DeforestInfo(..),
-
- ArgUsageInfo,
- ArgUsage(..),
- ArgUsageType(..),
- mkArgUsageInfo,
- getArgUsage,
-
- FBTypeInfo,
- FBType(..),
- FBConsum(..),
- FBProd(..),
- mkFBTypeInfo,
- getFBType
-
- ) where
-
-import Ubiq
-
-import IdLoop -- IdInfo is a dependency-loop ranch, and
- -- we break those loops by using IdLoop and
- -- *not* importing much of anything else,
- -- except from the very general "utils".
-
-import CmdLineOpts ( opt_OmitInterfacePragmas )
-import Maybes ( firstJust )
-import MatchEnv ( nullMEnv, isEmptyMEnv, mEnvToList )
-import Outputable ( ifPprInterface, Outputable(..){-instances-} )
-import PprStyle ( PprStyle(..) )
-import Pretty
-import SrcLoc ( mkUnknownSrcLoc )
-import Type ( eqSimpleTy )
-import Util ( mapAccumL, panic, assertPanic, pprPanic )
-
-applySubstToTy = panic "IdInfo.applySubstToTy"
-splitTypeWithDictsAsArgs = panic "IdInfo.splitTypeWithDictsAsArgs"
-showTypeCategory = panic "IdInfo.showTypeCategory"
-mkFormSummary = panic "IdInfo.mkFormSummary"
-occurAnalyseGlobalExpr = panic "IdInfo.occurAnalyseGlobalExpr"
-isWrapperFor = panic "IdInfo.isWrapperFor"
-pprCoreUnfolding = panic "IdInfo.pprCoreUnfolding"
-\end{code}
-
-An @IdInfo@ gives {\em optional} information about an @Id@. If
-present it never lies, but it may not be present, in which case there
-is always a conservative assumption which can be made.
-
-Two @Id@s may have different info even though they have the same
-@Unique@ (and are hence the same @Id@); for example, one might lack
-the properties attached to the other.
-
-The @IdInfo@ gives information about the value, or definition, of the
-@Id@. It does {\em not} contain information about the @Id@'s usage
-(except for @DemandInfo@? ToDo).
-
-\begin{code}
-data IdInfo
- = IdInfo
- ArityInfo -- Its arity