-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Error.ag) module UHC.Light.Compiler.Error(Err (..), ErrL , ThingAndRange , ErrSq , mkThingAnd1Range , module UHC.Light.Compiler.Base.Target , errLIsFatal , errIsFatal , mkNestErr, mkNestErr' , mkErr_NamesNotIntrod, mkErr_NamesNotIntrod') where import UHC.Light.Compiler.Base.Common import UHC.Light.Compiler.Ty import UHC.Util.Pretty import qualified UHC.Util.FastSeq as Seq import UHC.Util.Error import UHC.Light.Compiler.Base.Target (FFIWay) import UHC.Util.FPath type ThingAndRange x = (x,Maybe [(Range,Maybe PP_Doc)]) type ErrSq = Seq.FastSeq Err instance Error Err where strMsg m = rngLift emptyRange Err_Str m errIsFatal :: Err -> Bool errIsFatal (Err_MissingDataFields _ _ _ ) = False errIsFatal (Err_TyCoreMatchClash _ _ _ _ _ ) = False errIsFatal _ = True errLIsFatal :: [Err] -> Bool errLIsFatal es = not (null es) && any errIsFatal es mkNestErr' :: Range -> PP_Doc -> [ErrSq] -> ErrSq mkNestErr' r wher errs = Seq.fromList $ mkNestErr r wher $ Seq.toList $ Seq.unions errs mkNestErr :: Range -> PP_Doc -> ErrL -> ErrL mkNestErr r wher errL | null ({- forceEval -} errL) = [] | otherwise = [Err_NestedIn r wher errL] mkThingAnd1Range :: Range -> x -> ThingAndRange x mkThingAnd1Range r x = (x,Just [(r,Nothing)]) mkErr_NamesNotIntrod' :: PP n => Range -> String -> [ThingAndRange n] -> Err mkErr_NamesNotIntrod' r m ns = Err_NamesNotIntrod r m (assocLMapKey pp ns) mkErr_NamesNotIntrod :: Range -> String -> [HsName] -> Err mkErr_NamesNotIntrod r m ns = mkErr_NamesNotIntrod' r m (zip (map pp ns) (repeat Nothing)) -- Err --------------------------------------------------------- data Err = Err_PP {range_Err_PP :: !(Range),pp_Err_PP :: !(PP_Doc)} | Err_Str {range_Err_Str :: !(Range),str_Err_Str :: !(String)} | Err_UnifyClash {range_Err_UnifyClash :: !(Range),ty1_Err_UnifyClash :: !(Ty),ty2_Err_UnifyClash :: !(Ty),fiMode_Err_UnifyClash :: !(FIMode),ty1detail_Err_UnifyClash :: !(Ty),ty2detail_Err_UnifyClash :: !(Ty),fiModeD_Err_UnifyClash :: !(FIMode)} | Err_NamesNotIntrod {range_Err_NamesNotIntrod :: !(Range),kind_Err_NamesNotIntrod :: !(String),nmL_Err_NamesNotIntrod :: !(([ThingAndRange PP_Doc]))} | Err_PatArity {range_Err_PatArity :: !(Range),ty_Err_PatArity :: !(Ty),arity_Err_PatArity :: !(Int)} | Err_PatArity2 {range_Err_PatArity2 :: !(Range),kind_Err_PatArity2 :: !(String),what_Err_PatArity2 :: !(PP_Doc),arity_Err_PatArity2 :: !(Int)} | Err_NamesDupIntrod {range_Err_NamesDupIntrod :: !(Range),kind_Err_NamesDupIntrod :: !(String),nmL_Err_NamesDupIntrod :: !(([ThingAndRange HsName]))} | Err_NestedIn {range_Err_NestedIn :: !(Range),wher_Err_NestedIn :: !(PP_Doc),errL_Err_NestedIn :: !(ErrL)} | Err_Fixity {range_Err_Fixity :: !(Range),op1_Err_Fixity :: !(PP_Doc),op2_Err_Fixity :: !(PP_Doc)} | Err_UnifyOccurs {range_Err_UnifyOccurs :: !(Range),ty1_Err_UnifyOccurs :: !(Ty),ty2_Err_UnifyOccurs :: !(Ty),fiMode_Err_UnifyOccurs :: !(FIMode),tvar_Err_UnifyOccurs :: !(TyVarId),ty2detail_Err_UnifyOccurs :: !(Ty),fiModeD_Err_UnifyOccurs :: !(FIMode)} | Err_OccurCycle {range_Err_OccurCycle :: !(Range),tvar_Err_OccurCycle :: !(TyVarId),ty_Err_OccurCycle :: !(Ty)} | Err_Newtype {range_Err_Newtype :: !(Range),tyNm_Err_Newtype :: !(HsName)} | Err_FunPatternLengths {range_Err_FunPatternLengths :: !(Range),funNm_Err_FunPatternLengths :: !(HsName)} | Err_MissingRowLabels {range_Err_MissingRowLabels :: !(Range),nmL_Err_MissingRowLabels :: !(([HsName])),ty_Err_MissingRowLabels :: !(Ty)} | Err_TooManyRowLabels {range_Err_TooManyRowLabels :: !(Range),nmL_Err_TooManyRowLabels :: !(([HsName])),ty_Err_TooManyRowLabels :: !(Ty)} | Err_InconsistentIntros {range_Err_InconsistentIntros :: !(Range),kind_Err_InconsistentIntros :: !(String),nmL_Err_InconsistentIntros :: !(([HsName]))} | Err_MissingDataFields {range_Err_MissingDataFields :: !(Range),nmL_Err_MissingDataFields :: !(([HsName])),con_Err_MissingDataFields :: !(HsName)} | Err_MissingAnyDataField {range_Err_MissingAnyDataField :: !(Range),nmL_Err_MissingAnyDataField :: !(([HsName])),tyNm_Err_MissingAnyDataField :: !(HsName)} | Err_DuplicateDataFields {range_Err_DuplicateDataFields :: !(Range),nmL_Err_DuplicateDataFields :: !(([HsName]))} | Err_FileNotFound {range_Err_FileNotFound :: !(Range),fileName_Err_FileNotFound :: !(String),locations_Err_FileNotFound :: !(([String])),suffixes_Err_FileNotFound :: !(([FileSuffix]))} | Err_AmbiguousExport {range_Err_AmbiguousExport :: !(Range),name_Err_AmbiguousExport :: !(HsName),entities_Err_AmbiguousExport :: !(([ThingAndRange HsName]))} | Err_IllegalFFIWay {range_Err_IllegalFFIWay :: !(Range),ffiWay_Err_IllegalFFIWay :: !(FFIWay)} | Err_TyCoreMatchClash {range_Err_TyCoreMatchClash :: !(Range),ty1_Err_TyCoreMatchClash :: !(PP_Doc),ty2_Err_TyCoreMatchClash :: !(PP_Doc),ty1detail_Err_TyCoreMatchClash :: !((Maybe PP_Doc)),ty2detail_Err_TyCoreMatchClash :: !((Maybe PP_Doc))} | Err_TyCoreSeqLevels {range_Err_TyCoreSeqLevels :: !(Range),hereLev_Err_TyCoreSeqLevels :: !(Int),mustLev_Err_TyCoreSeqLevels :: !(Int),ty_Err_TyCoreSeqLevels :: !(PP_Doc)} | Err_NoCoerceDerivation {range_Err_NoCoerceDerivation :: !(Range),ty1_Err_NoCoerceDerivation :: !(Ty),ty2_Err_NoCoerceDerivation :: !(Ty),fiMode_Err_NoCoerceDerivation :: !(FIMode),func_Err_NoCoerceDerivation :: !(Ty),arg_Err_NoCoerceDerivation :: !(Ty)} | Err_PrfCutOffReached {range_Err_PrfCutOffReached :: !(Range),pred_Err_PrfCutOffReached :: !(PredOcc),depth_Err_PrfCutOffReached :: !(Int)} | Err_NotProvenPreds {range_Err_NotProvenPreds :: !(Range),preds_Err_NotProvenPreds :: !(([((Pred,[Range]),PP_Doc)]))} | Err_AmbigPreds {range_Err_AmbigPreds :: !(Range),preds_Err_AmbigPreds :: !(([(Pred,[Range])])),inQBinds_Err_AmbigPreds :: !((AssocL HsName PP_Doc)),inBinds_Err_AmbigPreds :: !((AssocL HsName PP_Doc))} | Err_OverlapPreds {range_Err_OverlapPreds :: !(Range),overl_Err_OverlapPreds :: !((AssocL Pred [PP_Doc]))} | Err_TyHasFreeTVars {range_Err_TyHasFreeTVars :: !(Range),ty_Err_TyHasFreeTVars :: !(Ty)} | Err_DeclsNotAllowed {range_Err_DeclsNotAllowed :: !(Range),inside_Err_DeclsNotAllowed :: !(String),decls_Err_DeclsNotAllowed :: !((AssocL IdOccKind [HsName]))} | Err_ValWithoutSig {range_Err_ValWithoutSig :: !(Range),nmL_Err_ValWithoutSig :: !(([HsName]))} | Err_NoMostSpecificPred {range_Err_NoMostSpecificPred :: !(Range),pred1_Err_NoMostSpecificPred :: !(Pred),pred2_Err_NoMostSpecificPred :: !(Pred)} | Err_EvidenceAltsLeft {range_Err_EvidenceAltsLeft :: !(Range)} | Err_MalformedPred {range_Err_MalformedPred :: !(Range),pp_Err_MalformedPred :: !(PP_Doc)} | Err_TyBetaRedLimit {range_Err_TyBetaRedLimit :: !(Range),ty_Err_TyBetaRedLimit :: !(Ty),tyTo_Err_TyBetaRedLimit :: !(Ty),limit_Err_TyBetaRedLimit :: !(Int)} | Err_MayOnlyHaveNrMain {range_Err_MayOnlyHaveNrMain :: !(Range),nrAllowed_Err_MayOnlyHaveNrMain :: !(Int),prevModNmL_Err_MayOnlyHaveNrMain :: !(([HsName])),modNm_Err_MayOnlyHaveNrMain :: !(HsName)} | Err_MayNotHaveMain {range_Err_MayNotHaveMain :: !(Range),modNm_Err_MayNotHaveMain :: !(HsName)} | Err_MustHaveMain {range_Err_MustHaveMain :: !(Range)} | Err_ModNameMismatch {range_Err_ModNameMismatch :: !(Range),nmOfFile_Err_ModNameMismatch :: !(HsName),nmFromSrc_Err_ModNameMismatch :: !(HsName)} | Err_AmbiguousNameRef {range_Err_AmbiguousNameRef :: !(Range),kindName_Err_AmbiguousNameRef :: !(String),kind_Err_AmbiguousNameRef :: !(String),nm_Err_AmbiguousNameRef :: !(HsName),nmAlts_Err_AmbiguousNameRef :: !(([HsName]))} | Err_MutRecModules {range_Err_MutRecModules :: !(Range),mutRecL_Err_MutRecModules :: !(([[HsName]]))} | Err_MalformedTy {range_Err_MalformedTy :: !(Range),kind_Err_MalformedTy :: !(String),purpose_Err_MalformedTy :: !(String),ty_Err_MalformedTy :: !(Ty)} | Err_NoDerivFor {range_Err_NoDerivFor :: !(Range),pred_Err_NoDerivFor :: !(PP_Doc)} | Err_NoDerivForData {range_Err_NoDerivForData :: !(Range),ty_Err_NoDerivForData :: !(Ty),clNm_Err_NoDerivForData :: !(HsName),reason_Err_NoDerivForData :: !(String)} | Err_FusionBuildInverse {range_Err_FusionBuildInverse :: !(Range),ty1_Err_FusionBuildInverse :: !(Ty),ty2_Err_FusionBuildInverse :: !(Ty)} | Err_InconsistentHI {range_Err_InconsistentHI :: !(Range),modNm_Err_InconsistentHI :: !(String),file_Err_InconsistentHI :: !(String),expected_Err_InconsistentHI :: !(([String])),inHI_Err_InconsistentHI :: !(([String]))} | Err_WrongMagic {range_Err_WrongMagic :: !(Range),modNm_Err_WrongMagic :: !(String),file_Err_WrongMagic :: !(String)} | Err_CannotCreateFile {range_Err_CannotCreateFile :: !(Range),modNm_Err_CannotCreateFile :: !(String),file_Err_CannotCreateFile :: !(String)} deriving ( Show,Typeable) -- ErrL -------------------------------------------------------- type ErrL = [Err]