module UHC.Light.Compiler.EH.MainAG_KiExpr where import Data.Char import Data.List as List import UHC.Util.Pretty import UHC.Light.Compiler.Base.Common import UHC.Light.Compiler.Base.TermLike import UHC.Light.Compiler.Base.HsName.Builtin import UHC.Light.Compiler.Opts import UHC.Light.Compiler.Gam.Full import UHC.Light.Compiler.Error import UHC.Light.Compiler.Error.Pretty import UHC.Light.Compiler.EH import UHC.Light.Compiler.Ty.Pretty import UHC.Light.Compiler.Ty.FitsInCommon import UHC.Light.Compiler.Ty.FitsIn import qualified UHC.Util.FastSeq as Seq import UHC.Util.Utils import UHC.Light.Compiler.Base.Trace import UHC.Light.Compiler.Base.UnderDev import UHC.Light.Compiler.VarMp import UHC.Light.Compiler.Substitutable import Data.Maybe import UHC.Light.Compiler.Ty.Utils1 import UHC.Light.Compiler.Ty.Trf.Quantify import UHC.Light.Compiler.Ty.Trf.Instantiate import UHC.Light.Compiler.Ty import UHC.Light.Compiler.Ty.FitsInCommon2 import UHC.Light.Compiler.Ty.FIEnv2 import qualified Data.Set as Set import qualified Data.Map as Map import Data.Set (Set) import Data.Map (Map) import UHC.Light.Compiler.Ty.Trf.FreshVar import UHC.Light.Compiler.Ty.Ftv import UHC.Util.Utils (groupSortOn) import Control.Applicative ((<|>)) import UHC.Light.Compiler.AbstractCore import UHC.Light.Compiler.AbstractCore.Utils import UHC.Light.Compiler.Core import UHC.Light.Compiler.Core.FFI import UHC.Light.Compiler.Core.Utils import UHC.Light.Compiler.Core.Pretty import UHC.Light.Compiler.Foreign.Extract import UHC.Light.Compiler.LamInfo import UHC.Light.Compiler.CodeGen.RefGenerator import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF import UHC.Light.Compiler.FinalEnv import UHC.Light.Compiler.Core.BindExtract import UHC.Light.Compiler.Core.Subst import Control.Monad.State import UHC.Light.Compiler.Ty.Utils2 import UHC.Light.Compiler.Base.Target import UHC.Light.Compiler.Core.Coercion import UHC.Light.Compiler.Ty.Trf.MergePreds import UHC.Light.Compiler.Ty.Trf.Canonic import UHC.Light.Compiler.Gam.ClGam import UHC.Light.Compiler.Pred import UHC.Light.Compiler.Pred.CtxtRedOnly.RedGraph (redPruneReductionsUntil) import UHC.Util.CHR import UHC.Light.Compiler.CHR.CtxtRedOnly.Constraint import UHC.Light.Compiler.CHR.CtxtRedOnly.Guard import UHC.Light.Compiler.Pred.CtxtRedOnly.ToCHR import UHC.Light.Compiler.Pred.CtxtRedOnly.Heuristics import UHC.Light.Compiler.Pred.CtxtRedOnly.Evidence import UHC.Light.Compiler.CHR.CtxtRedOnly.Solve import UHC.Light.Compiler.Pred.CtxtRedOnly.EvidenceToCore import UHC.Light.Compiler.Gam.ClassDefaultGam import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull) import UHC.Light.Compiler.Module.ImportExport import UHC.Light.Compiler.Ty.UsedNames import UHC.Light.Compiler.CodeGen.ImportUsedModules import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl import UHC.Light.Compiler.CodeGen.BuiltinPrims import UHC.Light.Compiler.Foreign import UHC.Light.Compiler.Foreign import UHC.Light.Compiler.Foreign.Pretty import UHC.Light.Compiler.Deriving import UHC.Light.Compiler.Generics import UHC.Light.Compiler.VarMp.Utils import UHC.Light.Compiler.EH.MainAG_common -- KiExpr ------------------------------------------------------ {- visit 0: synthesized attribute: range : Range visit 1: chained attribute: gUniq : UID visit 2: chained attribute: kiGam : KiGam synthesized attribute: ki : Ty visit 3: inherited attributes: finKiVarMp : VarMp finTyKiGam : TyKiGam finTyVarMp : VarMp moduleNm : HsName opts : EHCOpts sysfEnv : ToSysfEnv tr : TraceOn -> [PP_Doc] -> TrPP tyKiGlobFreeTvarS : TyVarIdS tyTyGlobFreeTvarS : TyVarIdS tyTyTySigFreeTvarS : TyVarIdS valTyGlobFreeTvarS : TyVarIdS synthesized attributes: allErrSq : ErrSq appArgPPL : [PP_Doc] appFunNm : HsName appFunPP : PP_Doc errSq : ErrSq gathMentrelFilterMp : ModEntRelFilterMp pp : PP_Doc ppAST : PP_Doc trpp : TrPP alternatives: alternative Con: child hsrange : {Range} child nm : {HsName} visit 0: local range : {Range} visit 1: intra range : {Range} visit 2: local _tup172 : _ local kgi : {KiGamInfo} intra range : {Range} visit 3: local pp : _ local nmErrs : {ErrL} intra _tup172 : _ intra range : {Range} alternative Var: child hsrange : {Range} child nm : {HsName} visit 0: local range : {Range} visit 1: local _tup174 : _ visit 2: local lUniq : {UID} local _tup173 : _ local kgi : {KiGamInfo} intra _tup174 : _ visit 3: local pp : _ alternative App: child hsrange : {Range} child func : KiExpr child arg : KiExpr visit 0: local range : {Range} visit 3: local pp : _ alternative AppTop: child hsrange : {Range} child kiExpr : KiExpr visit 0: local range : {Range} visit 3: local pp : _ alternative Parens: child hsrange : {Range} child kiExpr : KiExpr visit 0: local range : {Range} visit 3: local pp : _ alternative Ann: child hsrange : {Range} child ann : KiExprAnn child kiExpr : KiExpr visit 0: local range : {Range} visit 3: local pp : _ -} sem_KiExpr_Con :: Range -> HsName -> T_KiExpr sem_KiExpr_Con hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) = (case (hsrange_) of { _range | _range `seq` (True) -> (case (_range) of { _lhsOrange | _lhsOrange `seq` (True) -> (case ((let sem_KiExpr_Con_1 :: T_KiExpr_1 sem_KiExpr_Con_1 = (\ _lhsIgUniq -> _lhsIgUniq `seq` ((case (_lhsIgUniq) of { _lhsOgUniq | _lhsOgUniq `seq` (True) -> (case ((let sem_KiExpr_Con_2 :: T_KiExpr_2 sem_KiExpr_Con_2 = (\ _lhsIkiGam -> _lhsIkiGam `seq` ((case (case gamLookup nm_ _lhsIkiGam of Nothing -> (KiGamInfo Ty_Any,[rngLift _range mkErr_NamesNotIntrod "kind" [nm_]]) Just kgi -> (kgi,[])) of { __tup172 | __tup172 `seq` (True) -> (case (__tup172) of { (_kgi,_) | _kgi `seq` (True) -> (case (kgiKi _kgi) of { _lhsOki | _lhsOki `seq` (True) -> (case (_lhsIkiGam) of { _lhsOkiGam | _lhsOkiGam `seq` (True) -> (case ((let sem_KiExpr_Con_3 :: T_KiExpr_3 sem_KiExpr_Con_3 = (\ _lhsIfinKiVarMp _lhsIfinTyKiGam _lhsIfinTyVarMp _lhsImoduleNm _lhsIopts _lhsIsysfEnv _lhsItr _lhsItyKiGlobFreeTvarS _lhsItyTyGlobFreeTvarS _lhsItyTyTySigFreeTvarS _lhsIvalTyGlobFreeTvarS -> _lhsIfinKiVarMp `seq` (_lhsIfinTyKiGam `seq` (_lhsIfinTyVarMp `seq` (_lhsImoduleNm `seq` (_lhsIopts `seq` (_lhsIsysfEnv `seq` (_lhsItr `seq` (_lhsItyKiGlobFreeTvarS `seq` (_lhsItyTyGlobFreeTvarS `seq` (_lhsItyTyTySigFreeTvarS `seq` (_lhsIvalTyGlobFreeTvarS `seq` ((case (Seq.empty) of { _lhsOallErrSq | _lhsOallErrSq `seq` (True) -> (case ([]) of { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) -> (case (nm_) of { _lhsOappFunNm | _lhsOappFunNm `seq` (True) -> (case (pp nm_) of { _pp | _pp `seq` (True) -> (case (_pp) of { _lhsOappFunPP | _lhsOappFunPP `seq` (True) -> (case (__tup172) of { (_,_nmErrs) | _nmErrs `seq` (True) -> (case (rngLift _range mkNestErr' _pp [Seq.fromList _nmErrs]) of { _lhsOerrSq | _lhsOerrSq `seq` (True) -> (case (Map.empty) of { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) -> (case (_pp) of { _lhsOpp | _lhsOpp `seq` (True) -> (case (empty) of { _lhsOppAST | _lhsOppAST `seq` (True) -> (case (trppEmpty) of { _lhsOtrpp | _lhsOtrpp `seq` (True) -> ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppAST,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }))))))))))))) in sem_KiExpr_Con_3)) of { ( sem_KiExpr_3) | True -> ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) }))) in sem_KiExpr_Con_2)) of { ( sem_KiExpr_2) | True -> ( _lhsOgUniq,sem_KiExpr_2) }) }))) in sem_KiExpr_Con_1)) of { ( sem_KiExpr_1) | True -> ( _lhsOrange,sem_KiExpr_1) }) }) }) sem_KiExpr_Var :: Range -> HsName -> T_KiExpr sem_KiExpr_Var hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) = (case (hsrange_) of { _range | _range `seq` (True) -> (case (_range) of { _lhsOrange | _lhsOrange `seq` (True) -> (case ((let sem_KiExpr_Var_1 :: T_KiExpr_1 sem_KiExpr_Var_1 = (\ _lhsIgUniq -> _lhsIgUniq `seq` ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of { __tup174 | __tup174 `seq` (True) -> (case (__tup174) of { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) -> (case ((let sem_KiExpr_Var_2 :: T_KiExpr_2 sem_KiExpr_Var_2 = (\ _lhsIkiGam -> _lhsIkiGam `seq` ((case (__tup174) of { (_,_lUniq) | _lUniq `seq` (True) -> (case (case gamLookup nm_ _lhsIkiGam of Nothing -> let t = mkNewTyVar _lUniq kgi = KiGamInfo t in (kgi,gamAdd nm_ kgi _lhsIkiGam) Just kgi -> (kgi,_lhsIkiGam)) of { __tup173 | __tup173 `seq` (True) -> (case (__tup173) of { (_kgi,_) | _kgi `seq` (True) -> (case (kgiKi _kgi) of { _lhsOki | _lhsOki `seq` (True) -> (case (__tup173) of { (_,_lhsOkiGam) | _lhsOkiGam `seq` (True) -> (case ((let sem_KiExpr_Var_3 :: T_KiExpr_3 sem_KiExpr_Var_3 = (\ _lhsIfinKiVarMp _lhsIfinTyKiGam _lhsIfinTyVarMp _lhsImoduleNm _lhsIopts _lhsIsysfEnv _lhsItr _lhsItyKiGlobFreeTvarS _lhsItyTyGlobFreeTvarS _lhsItyTyTySigFreeTvarS _lhsIvalTyGlobFreeTvarS -> _lhsIfinKiVarMp `seq` (_lhsIfinTyKiGam `seq` (_lhsIfinTyVarMp `seq` (_lhsImoduleNm `seq` (_lhsIopts `seq` (_lhsIsysfEnv `seq` (_lhsItr `seq` (_lhsItyKiGlobFreeTvarS `seq` (_lhsItyTyGlobFreeTvarS `seq` (_lhsItyTyTySigFreeTvarS `seq` (_lhsIvalTyGlobFreeTvarS `seq` ((case (Seq.empty) of { _lhsOallErrSq | _lhsOallErrSq `seq` (True) -> (case ([]) of { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) -> (case (hsnUnknown) of { _lhsOappFunNm | _lhsOappFunNm `seq` (True) -> (case (pp nm_) of { _pp | _pp `seq` (True) -> (case (_pp) of { _lhsOappFunPP | _lhsOappFunPP `seq` (True) -> (case (Seq.empty) of { _lhsOerrSq | _lhsOerrSq `seq` (True) -> (case (Map.empty) of { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) -> (case (_pp) of { _lhsOpp | _lhsOpp `seq` (True) -> (case (empty) of { _lhsOppAST | _lhsOppAST `seq` (True) -> (case (trppEmpty) of { _lhsOtrpp | _lhsOtrpp `seq` (True) -> ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppAST,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }))))))))))))) in sem_KiExpr_Var_3)) of { ( sem_KiExpr_3) | True -> ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) }) }))) in sem_KiExpr_Var_2)) of { ( sem_KiExpr_2) | True -> ( _lhsOgUniq,sem_KiExpr_2) }) }) }))) in sem_KiExpr_Var_1)) of { ( sem_KiExpr_1) | True -> ( _lhsOrange,sem_KiExpr_1) }) }) }) sem_KiExpr_App :: Range -> T_KiExpr -> T_KiExpr -> T_KiExpr sem_KiExpr_App hsrange_ func_ arg_ | hsrange_ `seq` (func_ `seq` (arg_ `seq` (True))) = (case (arg_) of { ( _argIrange,arg_1) | True -> (case (func_) of { ( _funcIrange,func_1) | True -> (case (rangeUnions [hsrange_, _funcIrange , _argIrange ]) of { _range | _range `seq` (True) -> (case (_range) of { _lhsOrange | _lhsOrange `seq` (True) -> (case ((let sem_KiExpr_App_1 :: T_KiExpr_1 sem_KiExpr_App_1 = (\ _lhsIgUniq -> _lhsIgUniq `seq` ((case (_lhsIgUniq) of { _funcOgUniq | _funcOgUniq `seq` (True) -> (case (func_1 _funcOgUniq) of { ( _funcIgUniq,func_2) | True -> (case (_funcIgUniq) of { _argOgUniq | _argOgUniq `seq` (True) -> (case (arg_1 _argOgUniq) of { ( _argIgUniq,arg_2) | True -> (case (_argIgUniq) of { _lhsOgUniq | _lhsOgUniq `seq` (True) -> (case ((let sem_KiExpr_App_2 :: T_KiExpr_2 sem_KiExpr_App_2 = (\ _lhsIkiGam -> _lhsIkiGam `seq` ((case (_lhsIkiGam) of { _funcOkiGam | _funcOkiGam `seq` (True) -> (case (func_2 _funcOkiGam) of { ( _funcIki,_funcIkiGam,func_3) | True -> (case (_funcIkiGam) of { _argOkiGam | _argOkiGam `seq` (True) -> (case (arg_2 _argOkiGam) of { ( _argIki,_argIkiGam,arg_3) | True -> (case (Ty_App _funcIki _argIki) of { _lhsOki | _lhsOki `seq` (True) -> (case (_argIkiGam) of { _lhsOkiGam | _lhsOkiGam `seq` (True) -> (case ((let sem_KiExpr_App_3 :: T_KiExpr_3 sem_KiExpr_App_3 = (\ _lhsIfinKiVarMp _lhsIfinTyKiGam _lhsIfinTyVarMp _lhsImoduleNm _lhsIopts _lhsIsysfEnv _lhsItr _lhsItyKiGlobFreeTvarS _lhsItyTyGlobFreeTvarS _lhsItyTyTySigFreeTvarS _lhsIvalTyGlobFreeTvarS -> _lhsIfinKiVarMp `seq` (_lhsIfinTyKiGam `seq` (_lhsIfinTyVarMp `seq` (_lhsImoduleNm `seq` (_lhsIopts `seq` (_lhsIsysfEnv `seq` (_lhsItr `seq` (_lhsItyKiGlobFreeTvarS `seq` (_lhsItyTyGlobFreeTvarS `seq` (_lhsItyTyTySigFreeTvarS `seq` (_lhsIvalTyGlobFreeTvarS `seq` ((case (_lhsIvalTyGlobFreeTvarS) of { _argOvalTyGlobFreeTvarS | _argOvalTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyTyTySigFreeTvarS) of { _argOtyTyTySigFreeTvarS | _argOtyTyTySigFreeTvarS `seq` (True) -> (case (_lhsItyTyGlobFreeTvarS) of { _argOtyTyGlobFreeTvarS | _argOtyTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyKiGlobFreeTvarS) of { _argOtyKiGlobFreeTvarS | _argOtyKiGlobFreeTvarS `seq` (True) -> (case (_lhsItr) of { _argOtr | _argOtr `seq` (True) -> (case (_lhsIsysfEnv) of { _argOsysfEnv | _argOsysfEnv `seq` (True) -> (case (_lhsIopts) of { _argOopts | _argOopts `seq` (True) -> (case (_lhsImoduleNm) of { _argOmoduleNm | _argOmoduleNm `seq` (True) -> (case (_lhsIfinTyVarMp) of { _argOfinTyVarMp | _argOfinTyVarMp `seq` (True) -> (case (_lhsIfinTyKiGam) of { _argOfinTyKiGam | _argOfinTyKiGam `seq` (True) -> (case (_lhsIfinKiVarMp) of { _argOfinKiVarMp | _argOfinKiVarMp `seq` (True) -> (case (arg_3 _argOfinKiVarMp _argOfinTyKiGam _argOfinTyVarMp _argOmoduleNm _argOopts _argOsysfEnv _argOtr _argOtyKiGlobFreeTvarS _argOtyTyGlobFreeTvarS _argOtyTyTySigFreeTvarS _argOvalTyGlobFreeTvarS) of { ( _argIallErrSq,_argIappArgPPL,_argIappFunNm,_argIappFunPP,_argIerrSq,_argIgathMentrelFilterMp,_argIpp,_argIppAST,_argItrpp) | True -> (case (_lhsIvalTyGlobFreeTvarS) of { _funcOvalTyGlobFreeTvarS | _funcOvalTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyTyTySigFreeTvarS) of { _funcOtyTyTySigFreeTvarS | _funcOtyTyTySigFreeTvarS `seq` (True) -> (case (_lhsItyTyGlobFreeTvarS) of { _funcOtyTyGlobFreeTvarS | _funcOtyTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyKiGlobFreeTvarS) of { _funcOtyKiGlobFreeTvarS | _funcOtyKiGlobFreeTvarS `seq` (True) -> (case (_lhsItr) of { _funcOtr | _funcOtr `seq` (True) -> (case (_lhsIsysfEnv) of { _funcOsysfEnv | _funcOsysfEnv `seq` (True) -> (case (_lhsIopts) of { _funcOopts | _funcOopts `seq` (True) -> (case (_lhsImoduleNm) of { _funcOmoduleNm | _funcOmoduleNm `seq` (True) -> (case (_lhsIfinTyVarMp) of { _funcOfinTyVarMp | _funcOfinTyVarMp `seq` (True) -> (case (_lhsIfinTyKiGam) of { _funcOfinTyKiGam | _funcOfinTyKiGam `seq` (True) -> (case (_lhsIfinKiVarMp) of { _funcOfinKiVarMp | _funcOfinKiVarMp `seq` (True) -> (case (func_3 _funcOfinKiVarMp _funcOfinTyKiGam _funcOfinTyVarMp _funcOmoduleNm _funcOopts _funcOsysfEnv _funcOtr _funcOtyKiGlobFreeTvarS _funcOtyTyGlobFreeTvarS _funcOtyTyTySigFreeTvarS _funcOvalTyGlobFreeTvarS) of { ( _funcIallErrSq,_funcIappArgPPL,_funcIappFunNm,_funcIappFunPP,_funcIerrSq,_funcIgathMentrelFilterMp,_funcIpp,_funcIppAST,_funcItrpp) | True -> (case (_funcIallErrSq `Seq.union` _argIallErrSq) of { _lhsOallErrSq | _lhsOallErrSq `seq` (True) -> (case (_funcIappArgPPL ++ [_argIpp]) of { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) -> (case (_funcIappFunNm) of { _lhsOappFunNm | _lhsOappFunNm `seq` (True) -> (case (_funcIappFunPP) of { _lhsOappFunPP | _lhsOappFunPP `seq` (True) -> (case (_funcIerrSq `Seq.union` _argIerrSq) of { _lhsOerrSq | _lhsOerrSq `seq` (True) -> (case (_funcIgathMentrelFilterMp `mentrelFilterMpUnion` _argIgathMentrelFilterMp) of { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) -> (case (_funcIpp >#< _argIpp) of { _pp | _pp `seq` (True) -> (case (_pp) of { _lhsOpp | _lhsOpp `seq` (True) -> (case (_funcIppAST >-< _argIppAST) of { _lhsOppAST | _lhsOppAST `seq` (True) -> (case (_funcItrpp >< _argItrpp) of { _lhsOtrpp | _lhsOtrpp `seq` (True) -> ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppAST,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))) in sem_KiExpr_App_3)) of { ( sem_KiExpr_3) | True -> ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) }) }) }))) in sem_KiExpr_App_2)) of { ( sem_KiExpr_2) | True -> ( _lhsOgUniq,sem_KiExpr_2) }) }) }) }) }) }))) in sem_KiExpr_App_1)) of { ( sem_KiExpr_1) | True -> ( _lhsOrange,sem_KiExpr_1) }) }) }) }) }) sem_KiExpr_AppTop :: Range -> T_KiExpr -> T_KiExpr sem_KiExpr_AppTop hsrange_ kiExpr_ | hsrange_ `seq` (kiExpr_ `seq` (True)) = (case (kiExpr_) of { ( _kiExprIrange,kiExpr_1) | True -> (case (rangeUnions [hsrange_, _kiExprIrange , _kiExprIrange]) of { _range | _range `seq` (True) -> (case (_range) of { _lhsOrange | _lhsOrange `seq` (True) -> (case ((let sem_KiExpr_AppTop_1 :: T_KiExpr_1 sem_KiExpr_AppTop_1 = (\ _lhsIgUniq -> _lhsIgUniq `seq` ((case (_lhsIgUniq) of { _kiExprOgUniq | _kiExprOgUniq `seq` (True) -> (case (kiExpr_1 _kiExprOgUniq) of { ( _kiExprIgUniq,kiExpr_2) | True -> (case (_kiExprIgUniq) of { _lhsOgUniq | _lhsOgUniq `seq` (True) -> (case ((let sem_KiExpr_AppTop_2 :: T_KiExpr_2 sem_KiExpr_AppTop_2 = (\ _lhsIkiGam -> _lhsIkiGam `seq` ((case (_lhsIkiGam) of { _kiExprOkiGam | _kiExprOkiGam `seq` (True) -> (case (kiExpr_2 _kiExprOkiGam) of { ( _kiExprIki,_kiExprIkiGam,kiExpr_3) | True -> (case (_kiExprIki) of { _lhsOki | _lhsOki `seq` (True) -> (case (_kiExprIkiGam) of { _lhsOkiGam | _lhsOkiGam `seq` (True) -> (case ((let sem_KiExpr_AppTop_3 :: T_KiExpr_3 sem_KiExpr_AppTop_3 = (\ _lhsIfinKiVarMp _lhsIfinTyKiGam _lhsIfinTyVarMp _lhsImoduleNm _lhsIopts _lhsIsysfEnv _lhsItr _lhsItyKiGlobFreeTvarS _lhsItyTyGlobFreeTvarS _lhsItyTyTySigFreeTvarS _lhsIvalTyGlobFreeTvarS -> _lhsIfinKiVarMp `seq` (_lhsIfinTyKiGam `seq` (_lhsIfinTyVarMp `seq` (_lhsImoduleNm `seq` (_lhsIopts `seq` (_lhsIsysfEnv `seq` (_lhsItr `seq` (_lhsItyKiGlobFreeTvarS `seq` (_lhsItyTyGlobFreeTvarS `seq` (_lhsItyTyTySigFreeTvarS `seq` (_lhsIvalTyGlobFreeTvarS `seq` ((case (_lhsIvalTyGlobFreeTvarS) of { _kiExprOvalTyGlobFreeTvarS | _kiExprOvalTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyTyTySigFreeTvarS) of { _kiExprOtyTyTySigFreeTvarS | _kiExprOtyTyTySigFreeTvarS `seq` (True) -> (case (_lhsItyTyGlobFreeTvarS) of { _kiExprOtyTyGlobFreeTvarS | _kiExprOtyTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyKiGlobFreeTvarS) of { _kiExprOtyKiGlobFreeTvarS | _kiExprOtyKiGlobFreeTvarS `seq` (True) -> (case (_lhsItr) of { _kiExprOtr | _kiExprOtr `seq` (True) -> (case (_lhsIsysfEnv) of { _kiExprOsysfEnv | _kiExprOsysfEnv `seq` (True) -> (case (_lhsIopts) of { _kiExprOopts | _kiExprOopts `seq` (True) -> (case (_lhsImoduleNm) of { _kiExprOmoduleNm | _kiExprOmoduleNm `seq` (True) -> (case (_lhsIfinTyVarMp) of { _kiExprOfinTyVarMp | _kiExprOfinTyVarMp `seq` (True) -> (case (_lhsIfinTyKiGam) of { _kiExprOfinTyKiGam | _kiExprOfinTyKiGam `seq` (True) -> (case (_lhsIfinKiVarMp) of { _kiExprOfinKiVarMp | _kiExprOfinKiVarMp `seq` (True) -> (case (kiExpr_3 _kiExprOfinKiVarMp _kiExprOfinTyKiGam _kiExprOfinTyVarMp _kiExprOmoduleNm _kiExprOopts _kiExprOsysfEnv _kiExprOtr _kiExprOtyKiGlobFreeTvarS _kiExprOtyTyGlobFreeTvarS _kiExprOtyTyTySigFreeTvarS _kiExprOvalTyGlobFreeTvarS) of { ( _kiExprIallErrSq,_kiExprIappArgPPL,_kiExprIappFunNm,_kiExprIappFunPP,_kiExprIerrSq,_kiExprIgathMentrelFilterMp,_kiExprIpp,_kiExprIppAST,_kiExprItrpp) | True -> (case (_kiExprIallErrSq) of { _lhsOallErrSq | _lhsOallErrSq `seq` (True) -> (case ([]) of { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) -> (case (hsnUnknown) of { _lhsOappFunNm | _lhsOappFunNm `seq` (True) -> (case (ppAppTop (_kiExprIappFunNm,_kiExprIappFunPP) _kiExprIappArgPPL _kiExprIpp) of { _pp | _pp `seq` (True) -> (case (_pp) of { _lhsOappFunPP | _lhsOappFunPP `seq` (True) -> (case (_kiExprIerrSq) of { _lhsOerrSq | _lhsOerrSq `seq` (True) -> (case (_kiExprIgathMentrelFilterMp) of { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) -> (case (_pp) of { _lhsOpp | _lhsOpp `seq` (True) -> (case (_kiExprIppAST) of { _lhsOppAST | _lhsOppAST `seq` (True) -> (case (_kiExprItrpp) of { _lhsOtrpp | _lhsOtrpp `seq` (True) -> ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppAST,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))) in sem_KiExpr_AppTop_3)) of { ( sem_KiExpr_3) | True -> ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) }))) in sem_KiExpr_AppTop_2)) of { ( sem_KiExpr_2) | True -> ( _lhsOgUniq,sem_KiExpr_2) }) }) }) }))) in sem_KiExpr_AppTop_1)) of { ( sem_KiExpr_1) | True -> ( _lhsOrange,sem_KiExpr_1) }) }) }) }) sem_KiExpr_Parens :: Range -> T_KiExpr -> T_KiExpr sem_KiExpr_Parens hsrange_ kiExpr_ | hsrange_ `seq` (kiExpr_ `seq` (True)) = (case (kiExpr_) of { ( _kiExprIrange,kiExpr_1) | True -> (case (rangeUnions [hsrange_, _kiExprIrange , _kiExprIrange]) of { _range | _range `seq` (True) -> (case (_range) of { _lhsOrange | _lhsOrange `seq` (True) -> (case ((let sem_KiExpr_Parens_1 :: T_KiExpr_1 sem_KiExpr_Parens_1 = (\ _lhsIgUniq -> _lhsIgUniq `seq` ((case (_lhsIgUniq) of { _kiExprOgUniq | _kiExprOgUniq `seq` (True) -> (case (kiExpr_1 _kiExprOgUniq) of { ( _kiExprIgUniq,kiExpr_2) | True -> (case (_kiExprIgUniq) of { _lhsOgUniq | _lhsOgUniq `seq` (True) -> (case ((let sem_KiExpr_Parens_2 :: T_KiExpr_2 sem_KiExpr_Parens_2 = (\ _lhsIkiGam -> _lhsIkiGam `seq` ((case (_lhsIkiGam) of { _kiExprOkiGam | _kiExprOkiGam `seq` (True) -> (case (kiExpr_2 _kiExprOkiGam) of { ( _kiExprIki,_kiExprIkiGam,kiExpr_3) | True -> (case (_kiExprIki) of { _lhsOki | _lhsOki `seq` (True) -> (case (_kiExprIkiGam) of { _lhsOkiGam | _lhsOkiGam `seq` (True) -> (case ((let sem_KiExpr_Parens_3 :: T_KiExpr_3 sem_KiExpr_Parens_3 = (\ _lhsIfinKiVarMp _lhsIfinTyKiGam _lhsIfinTyVarMp _lhsImoduleNm _lhsIopts _lhsIsysfEnv _lhsItr _lhsItyKiGlobFreeTvarS _lhsItyTyGlobFreeTvarS _lhsItyTyTySigFreeTvarS _lhsIvalTyGlobFreeTvarS -> _lhsIfinKiVarMp `seq` (_lhsIfinTyKiGam `seq` (_lhsIfinTyVarMp `seq` (_lhsImoduleNm `seq` (_lhsIopts `seq` (_lhsIsysfEnv `seq` (_lhsItr `seq` (_lhsItyKiGlobFreeTvarS `seq` (_lhsItyTyGlobFreeTvarS `seq` (_lhsItyTyTySigFreeTvarS `seq` (_lhsIvalTyGlobFreeTvarS `seq` ((case (_lhsIvalTyGlobFreeTvarS) of { _kiExprOvalTyGlobFreeTvarS | _kiExprOvalTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyTyTySigFreeTvarS) of { _kiExprOtyTyTySigFreeTvarS | _kiExprOtyTyTySigFreeTvarS `seq` (True) -> (case (_lhsItyTyGlobFreeTvarS) of { _kiExprOtyTyGlobFreeTvarS | _kiExprOtyTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyKiGlobFreeTvarS) of { _kiExprOtyKiGlobFreeTvarS | _kiExprOtyKiGlobFreeTvarS `seq` (True) -> (case (_lhsItr) of { _kiExprOtr | _kiExprOtr `seq` (True) -> (case (_lhsIsysfEnv) of { _kiExprOsysfEnv | _kiExprOsysfEnv `seq` (True) -> (case (_lhsIopts) of { _kiExprOopts | _kiExprOopts `seq` (True) -> (case (_lhsImoduleNm) of { _kiExprOmoduleNm | _kiExprOmoduleNm `seq` (True) -> (case (_lhsIfinTyVarMp) of { _kiExprOfinTyVarMp | _kiExprOfinTyVarMp `seq` (True) -> (case (_lhsIfinTyKiGam) of { _kiExprOfinTyKiGam | _kiExprOfinTyKiGam `seq` (True) -> (case (_lhsIfinKiVarMp) of { _kiExprOfinKiVarMp | _kiExprOfinKiVarMp `seq` (True) -> (case (kiExpr_3 _kiExprOfinKiVarMp _kiExprOfinTyKiGam _kiExprOfinTyVarMp _kiExprOmoduleNm _kiExprOopts _kiExprOsysfEnv _kiExprOtr _kiExprOtyKiGlobFreeTvarS _kiExprOtyTyGlobFreeTvarS _kiExprOtyTyTySigFreeTvarS _kiExprOvalTyGlobFreeTvarS) of { ( _kiExprIallErrSq,_kiExprIappArgPPL,_kiExprIappFunNm,_kiExprIappFunPP,_kiExprIerrSq,_kiExprIgathMentrelFilterMp,_kiExprIpp,_kiExprIppAST,_kiExprItrpp) | True -> (case (_kiExprIallErrSq) of { _lhsOallErrSq | _lhsOallErrSq `seq` (True) -> (case ([]) of { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) -> (case (hsnUnknown) of { _lhsOappFunNm | _lhsOappFunNm `seq` (True) -> (case (ppParens _kiExprIpp) of { _pp | _pp `seq` (True) -> (case (_pp) of { _lhsOappFunPP | _lhsOappFunPP `seq` (True) -> (case (_kiExprIerrSq) of { _lhsOerrSq | _lhsOerrSq `seq` (True) -> (case (_kiExprIgathMentrelFilterMp) of { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) -> (case (_pp) of { _lhsOpp | _lhsOpp `seq` (True) -> (case (_kiExprIppAST) of { _lhsOppAST | _lhsOppAST `seq` (True) -> (case (_kiExprItrpp) of { _lhsOtrpp | _lhsOtrpp `seq` (True) -> ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppAST,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))) in sem_KiExpr_Parens_3)) of { ( sem_KiExpr_3) | True -> ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) }))) in sem_KiExpr_Parens_2)) of { ( sem_KiExpr_2) | True -> ( _lhsOgUniq,sem_KiExpr_2) }) }) }) }))) in sem_KiExpr_Parens_1)) of { ( sem_KiExpr_1) | True -> ( _lhsOrange,sem_KiExpr_1) }) }) }) }) sem_KiExpr_Ann :: Range -> T_KiExprAnn -> T_KiExpr -> T_KiExpr sem_KiExpr_Ann hsrange_ ann_ kiExpr_ | hsrange_ `seq` (ann_ `seq` (kiExpr_ `seq` (True))) = (case (kiExpr_) of { ( _kiExprIrange,kiExpr_1) | True -> (case (rangeUnions [hsrange_, _kiExprIrange , _kiExprIrange]) of { _range | _range `seq` (True) -> (case (_range) of { _lhsOrange | _lhsOrange `seq` (True) -> (case ((let sem_KiExpr_Ann_1 :: T_KiExpr_1 sem_KiExpr_Ann_1 = (\ _lhsIgUniq -> _lhsIgUniq `seq` ((case (_lhsIgUniq) of { _kiExprOgUniq | _kiExprOgUniq `seq` (True) -> (case (kiExpr_1 _kiExprOgUniq) of { ( _kiExprIgUniq,kiExpr_2) | True -> (case (_kiExprIgUniq) of { _lhsOgUniq | _lhsOgUniq `seq` (True) -> (case ((let sem_KiExpr_Ann_2 :: T_KiExpr_2 sem_KiExpr_Ann_2 = (\ _lhsIkiGam -> _lhsIkiGam `seq` ((case (_lhsIkiGam) of { _kiExprOkiGam | _kiExprOkiGam `seq` (True) -> (case (kiExpr_2 _kiExprOkiGam) of { ( _kiExprIki,_kiExprIkiGam,kiExpr_3) | True -> (case (_kiExprIki) of { _lhsOki | _lhsOki `seq` (True) -> (case (_kiExprIkiGam) of { _lhsOkiGam | _lhsOkiGam `seq` (True) -> (case ((let sem_KiExpr_Ann_3 :: T_KiExpr_3 sem_KiExpr_Ann_3 = (\ _lhsIfinKiVarMp _lhsIfinTyKiGam _lhsIfinTyVarMp _lhsImoduleNm _lhsIopts _lhsIsysfEnv _lhsItr _lhsItyKiGlobFreeTvarS _lhsItyTyGlobFreeTvarS _lhsItyTyTySigFreeTvarS _lhsIvalTyGlobFreeTvarS -> _lhsIfinKiVarMp `seq` (_lhsIfinTyKiGam `seq` (_lhsIfinTyVarMp `seq` (_lhsImoduleNm `seq` (_lhsIopts `seq` (_lhsIsysfEnv `seq` (_lhsItr `seq` (_lhsItyKiGlobFreeTvarS `seq` (_lhsItyTyGlobFreeTvarS `seq` (_lhsItyTyTySigFreeTvarS `seq` (_lhsIvalTyGlobFreeTvarS `seq` ((case (_lhsIvalTyGlobFreeTvarS) of { _kiExprOvalTyGlobFreeTvarS | _kiExprOvalTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyTyTySigFreeTvarS) of { _kiExprOtyTyTySigFreeTvarS | _kiExprOtyTyTySigFreeTvarS `seq` (True) -> (case (_lhsItyTyGlobFreeTvarS) of { _kiExprOtyTyGlobFreeTvarS | _kiExprOtyTyGlobFreeTvarS `seq` (True) -> (case (_lhsItyKiGlobFreeTvarS) of { _kiExprOtyKiGlobFreeTvarS | _kiExprOtyKiGlobFreeTvarS `seq` (True) -> (case (_lhsItr) of { _kiExprOtr | _kiExprOtr `seq` (True) -> (case (_lhsIsysfEnv) of { _kiExprOsysfEnv | _kiExprOsysfEnv `seq` (True) -> (case (_lhsIopts) of { _kiExprOopts | _kiExprOopts `seq` (True) -> (case (_lhsImoduleNm) of { _kiExprOmoduleNm | _kiExprOmoduleNm `seq` (True) -> (case (_lhsIfinTyVarMp) of { _kiExprOfinTyVarMp | _kiExprOfinTyVarMp `seq` (True) -> (case (_lhsIfinTyKiGam) of { _kiExprOfinTyKiGam | _kiExprOfinTyKiGam `seq` (True) -> (case (_lhsIfinKiVarMp) of { _kiExprOfinKiVarMp | _kiExprOfinKiVarMp `seq` (True) -> (case (kiExpr_3 _kiExprOfinKiVarMp _kiExprOfinTyKiGam _kiExprOfinTyVarMp _kiExprOmoduleNm _kiExprOopts _kiExprOsysfEnv _kiExprOtr _kiExprOtyKiGlobFreeTvarS _kiExprOtyTyGlobFreeTvarS _kiExprOtyTyTySigFreeTvarS _kiExprOvalTyGlobFreeTvarS) of { ( _kiExprIallErrSq,_kiExprIappArgPPL,_kiExprIappFunNm,_kiExprIappFunPP,_kiExprIerrSq,_kiExprIgathMentrelFilterMp,_kiExprIpp,_kiExprIppAST,_kiExprItrpp) | True -> (case (_kiExprIallErrSq) of { _lhsOallErrSq | _lhsOallErrSq `seq` (True) -> (case ([]) of { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) -> (case (hsnUnknown) of { _lhsOappFunNm | _lhsOappFunNm `seq` (True) -> (case (_kiExprIpp) of { _pp | _pp `seq` (True) -> (case (_pp) of { _lhsOappFunPP | _lhsOappFunPP `seq` (True) -> (case (_kiExprIerrSq) of { _lhsOerrSq | _lhsOerrSq `seq` (True) -> (case (_kiExprIgathMentrelFilterMp) of { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) -> (case (_pp) of { _lhsOpp | _lhsOpp `seq` (True) -> (case (_kiExprIppAST) of { _lhsOppAST | _lhsOppAST `seq` (True) -> (case (_kiExprItrpp) of { _lhsOtrpp | _lhsOtrpp `seq` (True) -> ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppAST,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))) in sem_KiExpr_Ann_3)) of { ( sem_KiExpr_3) | True -> ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) }))) in sem_KiExpr_Ann_2)) of { ( sem_KiExpr_2) | True -> ( _lhsOgUniq,sem_KiExpr_2) }) }) }) }))) in sem_KiExpr_Ann_1)) of { ( sem_KiExpr_1) | True -> ( _lhsOrange,sem_KiExpr_1) }) }) }) })