uhc-light-1.1.7.2: src/UHC/Light/Compiler/EH/MainAG_RecPatExpr.hs
module UHC.Light.Compiler.EH.MainAG_RecPatExpr 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.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.Base.Debug as Debug
import Debug.Trace
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.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.RedGraph (redPruneReductionsUntil)
import UHC.Light.Compiler.CHR
import UHC.Light.Compiler.CHR.Constraint
import UHC.Light.Compiler.Pred.CHR
import UHC.Light.Compiler.Pred.ToCHR
import UHC.Light.Compiler.Pred.Heuristics
import UHC.Light.Compiler.CHR.Solve
import UHC.Light.Compiler.Pred.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
-- RecPatExpr --------------------------------------------------
{-
visit 0:
synthesized attribute:
range : Range
visit 1:
chained attribute:
gUniq : UID
visit 2:
inherited attributes:
kiGam : KiGam
lexLev : Int
chained attribute:
predSameScopeCounter : Int
visit 3:
inherited attributes:
opts : EHCOpts
polGam : PolGam
predScope : PredScope
tyKiGlobFreeTvarS : TyVarIdS
chained attributes:
kiVarMp : VarMp
polVarMp : VarMp
tyGam : TyGam
tyKiGam : TyKiGam
visit 4:
inherited attributes:
clGam : ClGam
dataGam : DataGam
finKiVarMp : VarMp
finTyKiGam : TyKiGam
tyTyTySigFreeTvarS : TyVarIdS
chained attribute:
positionalFldNmL : [HsName]
synthesized attributes:
chrInstDeclSq : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
hasAFldRef : Bool
visit 5:
inherited attributes:
fiOpts : FIOpts
knTy : Ty
matchOnFld : Bool
tySigGam : ValGam
chained attributes:
patTyVarMp : VarMp
valGam : ValGam
visit 6:
inherited attributes:
chrStore : ScopedPredStore
clDfGam : ClassDefaultGam
tvKiVarMp : VarMp
tyTyGlobFreeTvarS : TyVarIdS
valTyGlobFreeTvarS : TyVarIdS
chained attribute:
tyVarMp : VarMp
synthesized attributes:
gathCnstrMp : CHRPredOccCnstrMp
gathRangeMp : RangeMp
scopeGam : ScopeGam
ty : Ty
visit 7:
inherited attributes:
ceParentNm : HsName
chrEvidBindMp : EvidKeyToCBindMap
chrScopeBindMp : PredScopeToCBindMap
finTyVarMp : VarMp
finValGam : ValGam
moduleNm : HsName
rangeMp : RangeMp
sysfEnv : ToSysfEnv
tySigVarMp : VarMp
chained attribute:
cSubst : CSubst
synthesized attributes:
allErrSq : ErrSq
errSq : ErrSq
extNm : HsName
fsRPatL : FieldSplitL
gathMentrelFilterMp : ModEntRelFilterMp
gathTvKiVarMp : VarMp
patCRest : CPatRest
pp : PP_Doc
ppL : [PP_Doc]
valCBindL : CBindL
alternatives:
alternative Empty:
child hsrange : {Range}
visit 0:
local range : {Range}
visit 1:
local _tup213 : _
intra range : {Range}
visit 2:
intra _tup213 : _
intra range : {Range}
visit 3:
intra _tup213 : _
intra range : {Range}
visit 4:
intra _tup213 : _
intra range : {Range}
visit 5:
local lUniq : {UID}
local fe : {FIEnv}
local fo_ : {FIOut}
intra _tup213 : _
intra range : {Range}
visit 6:
local ty : {Ty}
intra fo_ : {FIOut}
intra range : {Range}
visit 7:
local pp : _
intra fo_ : {FIOut}
intra range : {Range}
alternative Ext:
child hsrange : {Range}
child recPatExpr : RecPatExpr
child mbNm : {Maybe HsName}
child patExpr : PatExpr
visit 0:
local range : {Range}
visit 1:
local _tup216 : _
intra range : {Range}
visit 2:
intra _tup216 : _
intra range : {Range}
visit 3:
intra _tup216 : _
intra range : {Range}
visit 4:
local _tup215 : _
intra _tup216 : _
intra range : {Range}
visit 5:
local lUniq2 : {UID}
local lUniq : {UID}
local positionalNm : {HsName}
local nm : {HsName}
local _tup214 : _
local rowTy : {Ty}
local extTy : {Ty}
local patTy : {Ty}
local recTy : {Ty}
local fe : {FIEnv}
local fo_ : {FIOut}
intra _tup216 : _
intra _tup215 : _
intra range : {Range}
visit 6:
local lUniq3 : {UID}
local prUid : {PredOccId}
local prOccL : {[PredOcc]}
local hereCnstrMp : _
local ty : {Ty}
intra _tup216 : _
intra nm : {HsName}
intra rowTy : {Ty}
intra range : {Range}
intra fo_ : {FIOut}
intra positionalNm : {HsName}
visit 7:
local pp : _
local offset : _
intra fo_ : {FIOut}
intra range : {Range}
intra prUid : {PredOccId}
intra nm : {HsName}
intra positionalNm : {HsName}
alternative Expr:
child hsrange : {Range}
child patExpr : PatExpr
visit 0:
local range : {Range}
visit 7:
local pp : _
-}
sem_RecPatExpr_Empty :: Range ->
T_RecPatExpr
sem_RecPatExpr_Empty hsrange_ | hsrange_ `seq` (True) =
(case (hsrange_) of
{ _range | _range `seq` (True) ->
(case (_range) of
{ _lhsOrange | _lhsOrange `seq` (True) ->
(case ((let sem_RecPatExpr_Empty_1 :: T_RecPatExpr_1
sem_RecPatExpr_Empty_1 =
(\ _lhsIgUniq ->
_lhsIgUniq `seq`
((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup213 | __tup213 `seq` (True) ->
(case (__tup213) of
{ (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
(case ((let sem_RecPatExpr_Empty_2 :: T_RecPatExpr_2
sem_RecPatExpr_Empty_2 =
(\ _lhsIkiGam
_lhsIlexLev
_lhsIpredSameScopeCounter ->
_lhsIkiGam `seq`
(_lhsIlexLev `seq`
(_lhsIpredSameScopeCounter `seq`
((case (_lhsIpredSameScopeCounter) of
{ _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
(case ((let sem_RecPatExpr_Empty_3 :: T_RecPatExpr_3
sem_RecPatExpr_Empty_3 =
(\ _lhsIkiVarMp
_lhsIopts
_lhsIpolGam
_lhsIpolVarMp
_lhsIpredScope
_lhsItyGam
_lhsItyKiGam
_lhsItyKiGlobFreeTvarS ->
_lhsIkiVarMp `seq`
(_lhsIopts `seq`
(_lhsIpolGam `seq`
(_lhsIpolVarMp `seq`
(_lhsIpredScope `seq`
(_lhsItyGam `seq`
(_lhsItyKiGam `seq`
(_lhsItyKiGlobFreeTvarS `seq`
((case (_lhsIkiVarMp) of
{ _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
(case (_lhsIpolVarMp) of
{ _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
(case (_lhsItyGam) of
{ _lhsOtyGam | _lhsOtyGam `seq` (True) ->
(case (_lhsItyKiGam) of
{ _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
(case ((let sem_RecPatExpr_Empty_4 :: T_RecPatExpr_4
sem_RecPatExpr_Empty_4 =
(\ _lhsIclGam
_lhsIdataGam
_lhsIfinKiVarMp
_lhsIfinTyKiGam
_lhsIpositionalFldNmL
_lhsItyTyTySigFreeTvarS ->
_lhsIclGam `seq`
(_lhsIdataGam `seq`
(_lhsIfinKiVarMp `seq`
(_lhsIfinTyKiGam `seq`
(_lhsIpositionalFldNmL `seq`
(_lhsItyTyTySigFreeTvarS `seq`
((case (Seq.empty) of
{ _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
(case (False) of
{ _lhsOhasAFldRef | _lhsOhasAFldRef `seq` (True) ->
(case (_lhsIpositionalFldNmL) of
{ _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
(case ((let sem_RecPatExpr_Empty_5 :: T_RecPatExpr_5
sem_RecPatExpr_Empty_5 =
(\ _lhsIfiOpts
_lhsIknTy
_lhsImatchOnFld
_lhsIpatTyVarMp
_lhsItySigGam
_lhsIvalGam ->
_lhsIfiOpts `seq`
(_lhsIknTy `seq`
(_lhsImatchOnFld `seq`
(_lhsIpatTyVarMp `seq`
(_lhsItySigGam `seq`
(_lhsIvalGam `seq`
((case (__tup213) of
{ (_,_lUniq) | _lUniq `seq` (True) ->
(case (defaultFIEnv
{ feEHCOpts = _lhsIopts
, fePredScope = _lhsIpredScope
, feTyGam = _lhsItyGam
, fePolGam = _lhsIpolGam
, feRange = _range
}) of
{ _fe | _fe `seq` (True) ->
(case (fitsIn (_lhsIfiOpts) _fe _lUniq _lhsIpatTyVarMp _lhsIknTy recRecEmp) of
{ _fo_ | _fo_ `seq` (True) ->
(case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
{ _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
(case (_lhsIvalGam) of
{ _lhsOvalGam | _lhsOvalGam `seq` (True) ->
(case ((let sem_RecPatExpr_Empty_6 :: T_RecPatExpr_6
sem_RecPatExpr_Empty_6 =
(\ _lhsIchrStore
_lhsIclDfGam
_lhsItvKiVarMp
_lhsItyTyGlobFreeTvarS
_lhsItyVarMp
_lhsIvalTyGlobFreeTvarS ->
_lhsIchrStore `seq`
(_lhsIclDfGam `seq`
(_lhsItvKiVarMp `seq`
(_lhsItyTyGlobFreeTvarS `seq`
(_lhsItyVarMp `seq`
(_lhsIvalTyGlobFreeTvarS `seq`
((case (Map.empty) of
{ _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
(case (Map.empty) of
{ _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
(case (emptyGam) of
{ _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
(case (foTy _fo_) of
{ _ty | _ty `seq` (True) ->
(case (_ty) of
{ _lhsOty | _lhsOty `seq` (True) ->
(case (_lhsItyVarMp) of
{ _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
(case ((let sem_RecPatExpr_Empty_7 :: T_RecPatExpr_7
sem_RecPatExpr_Empty_7 =
(\ _lhsIcSubst
_lhsIceParentNm
_lhsIchrEvidBindMp
_lhsIchrScopeBindMp
_lhsIfinTyVarMp
_lhsIfinValGam
_lhsImoduleNm
_lhsIrangeMp
_lhsIsysfEnv
_lhsItySigVarMp ->
_lhsIcSubst `seq`
(_lhsIceParentNm `seq`
(_lhsIchrEvidBindMp `seq`
(_lhsIchrScopeBindMp `seq`
(_lhsIfinTyVarMp `seq`
(_lhsIfinValGam `seq`
(_lhsImoduleNm `seq`
(_lhsIrangeMp `seq`
(_lhsIsysfEnv `seq`
(_lhsItySigVarMp `seq`
((case (Seq.empty) of
{ _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
(case (_lhsIcSubst) of
{ _lhsOcSubst | _lhsOcSubst `seq` (True) ->
(case (hsnORec >|< hsnCRec) of
{ _pp | _pp `seq` (True) ->
(case (rngLift _range mkNestErr' _pp [foErrSq _fo_]) of
{ _lhsOerrSq | _lhsOerrSq `seq` (True) ->
(case (hsnRowEmpty) of
{ _lhsOextNm | _lhsOextNm `seq` (True) ->
(case ([]) of
{ _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
(case (Map.empty) of
{ _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
(case (emptyVarMp) of
{ _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
(case (CPatRest_Empty) of
{ _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
(case (_pp) of
{ _lhsOpp | _lhsOpp `seq` (True) ->
(case ([]) of
{ _lhsOppL | _lhsOppL `seq` (True) ->
(case ([]) of
{ _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
in sem_RecPatExpr_Empty_7)) of
{ ( sem_RecPatExpr_7) | True ->
( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_RecPatExpr_7) }) }) }) }) }) }) }))))))))
in sem_RecPatExpr_Empty_6)) of
{ ( sem_RecPatExpr_6) | True ->
( _lhsOpatTyVarMp,_lhsOvalGam,sem_RecPatExpr_6) }) }) }) }) }) }))))))))
in sem_RecPatExpr_Empty_5)) of
{ ( sem_RecPatExpr_5) | True ->
( _lhsOchrInstDeclSq,_lhsOhasAFldRef,_lhsOpositionalFldNmL,sem_RecPatExpr_5) }) }) }) }))))))))
in sem_RecPatExpr_Empty_4)) of
{ ( sem_RecPatExpr_4) | True ->
( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_RecPatExpr_4) }) }) }) }) }))))))))))
in sem_RecPatExpr_Empty_3)) of
{ ( sem_RecPatExpr_3) | True ->
( _lhsOpredSameScopeCounter,sem_RecPatExpr_3) }) })))))
in sem_RecPatExpr_Empty_2)) of
{ ( sem_RecPatExpr_2) | True ->
( _lhsOgUniq,sem_RecPatExpr_2) }) }) })))
in sem_RecPatExpr_Empty_1)) of
{ ( sem_RecPatExpr_1) | True ->
( _lhsOrange,sem_RecPatExpr_1) }) }) })
sem_RecPatExpr_Ext :: Range ->
T_RecPatExpr ->
(Maybe HsName) ->
T_PatExpr ->
T_RecPatExpr
sem_RecPatExpr_Ext hsrange_ recPatExpr_ mbNm_ patExpr_ | hsrange_ `seq` (recPatExpr_ `seq` (mbNm_ `seq` (patExpr_ `seq` (True)))) =
(case (patExpr_) of
{ ( _patExprIrange,patExpr_1) | True ->
(case (recPatExpr_) of
{ ( _recPatExprIrange,recPatExpr_1) | True ->
(case (rangeUnions [hsrange_, _recPatExprIrange
, _patExprIrange
]) of
{ _range | _range `seq` (True) ->
(case (_range) of
{ _lhsOrange | _lhsOrange `seq` (True) ->
(case ((let sem_RecPatExpr_Ext_1 :: T_RecPatExpr_1
sem_RecPatExpr_Ext_1 =
(\ _lhsIgUniq ->
_lhsIgUniq `seq`
((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )) of
{ __tup216 | __tup216 `seq` (True) ->
(case (__tup216) of
{ (_recPatExprOgUniq,_,_,_) | _recPatExprOgUniq `seq` (True) ->
(case (recPatExpr_1 _recPatExprOgUniq) of
{ ( _recPatExprIgUniq,recPatExpr_2) | True ->
(case (_recPatExprIgUniq) of
{ _patExprOgUniq | _patExprOgUniq `seq` (True) ->
(case (patExpr_1 _patExprOgUniq) of
{ ( _patExprIgUniq,patExpr_2) | True ->
(case (_patExprIgUniq) of
{ _lhsOgUniq | _lhsOgUniq `seq` (True) ->
(case ((let sem_RecPatExpr_Ext_2 :: T_RecPatExpr_2
sem_RecPatExpr_Ext_2 =
(\ _lhsIkiGam
_lhsIlexLev
_lhsIpredSameScopeCounter ->
_lhsIkiGam `seq`
(_lhsIlexLev `seq`
(_lhsIpredSameScopeCounter `seq`
((case (_lhsIpredSameScopeCounter) of
{ _recPatExprOpredSameScopeCounter | _recPatExprOpredSameScopeCounter `seq` (True) ->
(case (_lhsIlexLev) of
{ _recPatExprOlexLev | _recPatExprOlexLev `seq` (True) ->
(case (_lhsIkiGam) of
{ _recPatExprOkiGam | _recPatExprOkiGam `seq` (True) ->
(case (recPatExpr_2 _recPatExprOkiGam _recPatExprOlexLev _recPatExprOpredSameScopeCounter) of
{ ( _recPatExprIpredSameScopeCounter,recPatExpr_3) | True ->
(case (_recPatExprIpredSameScopeCounter) of
{ _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
(case (_lhsIlexLev) of
{ _patExprOlexLev | _patExprOlexLev `seq` (True) ->
(case (_lhsIkiGam) of
{ _patExprOkiGam | _patExprOkiGam `seq` (True) ->
(case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
{ ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
(case (_patExprIpredSameScopeCounter) of
{ _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
(case ((let sem_RecPatExpr_Ext_3 :: T_RecPatExpr_3
sem_RecPatExpr_Ext_3 =
(\ _lhsIkiVarMp
_lhsIopts
_lhsIpolGam
_lhsIpolVarMp
_lhsIpredScope
_lhsItyGam
_lhsItyKiGam
_lhsItyKiGlobFreeTvarS ->
_lhsIkiVarMp `seq`
(_lhsIopts `seq`
(_lhsIpolGam `seq`
(_lhsIpolVarMp `seq`
(_lhsIpredScope `seq`
(_lhsItyGam `seq`
(_lhsItyKiGam `seq`
(_lhsItyKiGlobFreeTvarS `seq`
((case (_lhsItyKiGlobFreeTvarS) of
{ _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
(case (_lhsItyKiGlobFreeTvarS) of
{ _recPatExprOtyKiGlobFreeTvarS | _recPatExprOtyKiGlobFreeTvarS `seq` (True) ->
(case (_lhsItyKiGam) of
{ _recPatExprOtyKiGam | _recPatExprOtyKiGam `seq` (True) ->
(case (_lhsItyGam) of
{ _recPatExprOtyGam | _recPatExprOtyGam `seq` (True) ->
(case (_lhsIpredScope) of
{ _recPatExprOpredScope | _recPatExprOpredScope `seq` (True) ->
(case (_lhsIpolVarMp) of
{ _recPatExprOpolVarMp | _recPatExprOpolVarMp `seq` (True) ->
(case (_lhsIpolGam) of
{ _recPatExprOpolGam | _recPatExprOpolGam `seq` (True) ->
(case (_lhsIopts) of
{ _recPatExprOopts | _recPatExprOopts `seq` (True) ->
(case (_lhsIkiVarMp) of
{ _recPatExprOkiVarMp | _recPatExprOkiVarMp `seq` (True) ->
(case (recPatExpr_3 _recPatExprOkiVarMp _recPatExprOopts _recPatExprOpolGam _recPatExprOpolVarMp _recPatExprOpredScope _recPatExprOtyGam _recPatExprOtyKiGam _recPatExprOtyKiGlobFreeTvarS) of
{ ( _recPatExprIkiVarMp,_recPatExprIpolVarMp,_recPatExprItyGam,_recPatExprItyKiGam,recPatExpr_4) | True ->
(case (_recPatExprItyKiGam) of
{ _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
(case (_recPatExprItyGam) of
{ _patExprOtyGam | _patExprOtyGam `seq` (True) ->
(case (_lhsIpredScope) of
{ _patExprOpredScope | _patExprOpredScope `seq` (True) ->
(case (_recPatExprIpolVarMp) of
{ _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
(case (_lhsIpolGam) of
{ _patExprOpolGam | _patExprOpolGam `seq` (True) ->
(case (_lhsIopts) of
{ _patExprOopts | _patExprOopts `seq` (True) ->
(case (_recPatExprIkiVarMp) of
{ _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
(case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
{ ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
(case (_patExprIkiVarMp) of
{ _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
(case (_patExprIpolVarMp) of
{ _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
(case (_patExprItyGam) of
{ _lhsOtyGam | _lhsOtyGam `seq` (True) ->
(case (_patExprItyKiGam) of
{ _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
(case ((let sem_RecPatExpr_Ext_4 :: T_RecPatExpr_4
sem_RecPatExpr_Ext_4 =
(\ _lhsIclGam
_lhsIdataGam
_lhsIfinKiVarMp
_lhsIfinTyKiGam
_lhsIpositionalFldNmL
_lhsItyTyTySigFreeTvarS ->
_lhsIclGam `seq`
(_lhsIdataGam `seq`
(_lhsIfinKiVarMp `seq`
(_lhsIfinTyKiGam `seq`
(_lhsIpositionalFldNmL `seq`
(_lhsItyTyTySigFreeTvarS `seq`
((case (_lhsItyTyTySigFreeTvarS) of
{ _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
(case (_lhsIfinTyKiGam) of
{ _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
(case (_lhsIfinKiVarMp) of
{ _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
(case (_lhsIdataGam) of
{ _patExprOdataGam | _patExprOdataGam `seq` (True) ->
(case (_lhsIclGam) of
{ _patExprOclGam | _patExprOclGam `seq` (True) ->
(case (_lhsItyTyTySigFreeTvarS) of
{ _recPatExprOtyTyTySigFreeTvarS | _recPatExprOtyTyTySigFreeTvarS `seq` (True) ->
(case (_lhsIfinTyKiGam) of
{ _recPatExprOfinTyKiGam | _recPatExprOfinTyKiGam `seq` (True) ->
(case (_lhsIfinKiVarMp) of
{ _recPatExprOfinKiVarMp | _recPatExprOfinKiVarMp `seq` (True) ->
(case (_lhsIdataGam) of
{ _recPatExprOdataGam | _recPatExprOdataGam `seq` (True) ->
(case (_lhsIclGam) of
{ _recPatExprOclGam | _recPatExprOclGam `seq` (True) ->
(case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
{ ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
(case (_lhsIpositionalFldNmL) of
{ _recPatExprOpositionalFldNmL | _recPatExprOpositionalFldNmL `seq` (True) ->
(case (recPatExpr_4 _recPatExprOclGam _recPatExprOdataGam _recPatExprOfinKiVarMp _recPatExprOfinTyKiGam _recPatExprOpositionalFldNmL _recPatExprOtyTyTySigFreeTvarS) of
{ ( _recPatExprIchrInstDeclSq,_recPatExprIhasAFldRef,_recPatExprIpositionalFldNmL,recPatExpr_5) | True ->
(case (_recPatExprIchrInstDeclSq `Seq.union` _patExprIchrInstDeclSq) of
{ _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
(case (maybe _recPatExprIhasAFldRef (const True) mbNm_) of
{ _lhsOhasAFldRef | _lhsOhasAFldRef `seq` (True) ->
(case (hdAndTl _recPatExprIpositionalFldNmL) of
{ __tup215 | __tup215 `seq` (True) ->
(case (__tup215) of
{ (_,_lhsOpositionalFldNmL) | _lhsOpositionalFldNmL `seq` (True) ->
(case ((let sem_RecPatExpr_Ext_5 :: T_RecPatExpr_5
sem_RecPatExpr_Ext_5 =
(\ _lhsIfiOpts
_lhsIknTy
_lhsImatchOnFld
_lhsIpatTyVarMp
_lhsItySigGam
_lhsIvalGam ->
_lhsIfiOpts `seq`
(_lhsIknTy `seq`
(_lhsImatchOnFld `seq`
(_lhsIpatTyVarMp `seq`
(_lhsItySigGam `seq`
(_lhsIvalGam `seq`
((case (_lhsIvalGam) of
{ _recPatExprOvalGam | _recPatExprOvalGam `seq` (True) ->
(case (_lhsItySigGam) of
{ _recPatExprOtySigGam | _recPatExprOtySigGam `seq` (True) ->
(case (_lhsImatchOnFld) of
{ _recPatExprOmatchOnFld | _recPatExprOmatchOnFld `seq` (True) ->
(case (_lhsIfiOpts) of
{ _recPatExprOfiOpts | _recPatExprOfiOpts `seq` (True) ->
(case (__tup216) of
{ (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
(case (__tup216) of
{ (_,_lUniq,_,_) | _lUniq `seq` (True) ->
(case (__tup215) of
{ (_positionalNm,_) | _positionalNm `seq` (True) ->
(case (case mbNm_ of
Just nm -> nm
Nothing | _lhsImatchOnFld -> _patExprItopNm
| otherwise -> _positionalNm) of
{ _nm | _nm `seq` (True) ->
(case (let [r,e] = mkNewTyVarL 2 _lUniq
in (r,e)) of
{ __tup214 | __tup214 `seq` (True) ->
(case (__tup214) of
{ (_rowTy,_) | _rowTy `seq` (True) ->
(case (hsnRec `appConApp` [_rowTy]) of
{ _extTy | _extTy `seq` (True) ->
(case (__tup214) of
{ (_,_patTy) | _patTy `seq` (True) ->
(case (_extTy `recRecExt` [(_nm,_patTy)]) of
{ _recTy | _recTy `seq` (True) ->
(case (defaultFIEnv
{ feEHCOpts = _lhsIopts
, fePredScope = _lhsIpredScope
, feTyGam = _lhsItyGam
, fePolGam = _lhsIpolGam
, feRange = _range
}) of
{ _fe | _fe `seq` (True) ->
(case (fitsIn (_lhsIfiOpts) _fe _lUniq2 _lhsIpatTyVarMp _lhsIknTy _recTy) of
{ _fo_ | _fo_ `seq` (True) ->
(case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
{ _recPatExprOpatTyVarMp | _recPatExprOpatTyVarMp `seq` (True) ->
(case (_extTy) of
{ _recPatExprOknTy | _recPatExprOknTy `seq` (True) ->
(case (recPatExpr_5 _recPatExprOfiOpts _recPatExprOknTy _recPatExprOmatchOnFld _recPatExprOpatTyVarMp _recPatExprOtySigGam _recPatExprOvalGam) of
{ ( _recPatExprIpatTyVarMp,_recPatExprIvalGam,recPatExpr_6) | True ->
(case (_recPatExprIvalGam) of
{ _patExprOvalGam | _patExprOvalGam `seq` (True) ->
(case (_lhsItySigGam) of
{ _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
(case (_recPatExprIpatTyVarMp) of
{ _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
(case (_lhsIfiOpts) of
{ _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
(case (True) of
{ _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
(case (_patTy) of
{ _patExprOknTy | _patExprOknTy `seq` (True) ->
(case ([]) of
{ _patExprOknTyL | _patExprOknTyL `seq` (True) ->
(case (patExpr_5 _patExprOvalGam) of
{ ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
(case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
{ ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
(case (_patExprIpatTyVarMp) of
{ _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
(case (_patExprIvalGam) of
{ _lhsOvalGam | _lhsOvalGam `seq` (True) ->
(case ((let sem_RecPatExpr_Ext_6 :: T_RecPatExpr_6
sem_RecPatExpr_Ext_6 =
(\ _lhsIchrStore
_lhsIclDfGam
_lhsItvKiVarMp
_lhsItyTyGlobFreeTvarS
_lhsItyVarMp
_lhsIvalTyGlobFreeTvarS ->
_lhsIchrStore `seq`
(_lhsIclDfGam `seq`
(_lhsItvKiVarMp `seq`
(_lhsItyTyGlobFreeTvarS `seq`
(_lhsItyVarMp `seq`
(_lhsIvalTyGlobFreeTvarS `seq`
((case (_lhsIvalTyGlobFreeTvarS) of
{ _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
(case (_lhsIvalTyGlobFreeTvarS) of
{ _recPatExprOvalTyGlobFreeTvarS | _recPatExprOvalTyGlobFreeTvarS `seq` (True) ->
(case (_lhsItyVarMp) of
{ _recPatExprOtyVarMp | _recPatExprOtyVarMp `seq` (True) ->
(case (_lhsItyTyGlobFreeTvarS) of
{ _recPatExprOtyTyGlobFreeTvarS | _recPatExprOtyTyGlobFreeTvarS `seq` (True) ->
(case (_lhsItvKiVarMp) of
{ _recPatExprOtvKiVarMp | _recPatExprOtvKiVarMp `seq` (True) ->
(case (_lhsIclDfGam) of
{ _recPatExprOclDfGam | _recPatExprOclDfGam `seq` (True) ->
(case (_lhsIchrStore) of
{ _recPatExprOchrStore | _recPatExprOchrStore `seq` (True) ->
(case (recPatExpr_6 _recPatExprOchrStore _recPatExprOclDfGam _recPatExprOtvKiVarMp _recPatExprOtyTyGlobFreeTvarS _recPatExprOtyVarMp _recPatExprOvalTyGlobFreeTvarS) of
{ ( _recPatExprIgathCnstrMp,_recPatExprIgathRangeMp,_recPatExprIscopeGam,_recPatExprIty,_recPatExprItyVarMp,recPatExpr_7) | True ->
(case (_recPatExprItyVarMp) of
{ _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
(case (_lhsItyTyGlobFreeTvarS) of
{ _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
(case (_lhsItvKiVarMp) of
{ _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
(case (_lhsIclDfGam) of
{ _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
(case (_lhsIchrStore) of
{ _patExprOchrStore | _patExprOchrStore `seq` (True) ->
(case (__tup216) of
{ (_,_,_,_lUniq3) | _lUniq3 `seq` (True) ->
(case (mkPrIdCHR _lUniq3) of
{ _prUid | _prUid `seq` (True) ->
(case ([rngLift _range mkPredOccRng (Pred_Lacks _rowTy (Label_Lab _nm)) _prUid _lhsIpredScope]) of
{ _prOccL | _prOccL `seq` (True) ->
(case (gathPredLToProveCnstrMp _prOccL) of
{ _hereCnstrMp | _hereCnstrMp `seq` (True) ->
(case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
{ ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
(case (cnstrMpUnions [_hereCnstrMp, _recPatExprIgathCnstrMp, _patExprIgathCnstrMp]) of
{ _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
(case (_recPatExprIgathRangeMp `Map.union` _patExprIgathRangeMp) of
{ _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
(case (_recPatExprIscopeGam `gamUnion` _patExprIscopeGam) of
{ _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
(case (foTy _fo_) of
{ _ty | _ty `seq` (True) ->
(case (_ty) of
{ _lhsOty | _lhsOty `seq` (True) ->
(case (_patExprItyVarMp) of
{ _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
(case ((let sem_RecPatExpr_Ext_7 :: T_RecPatExpr_7
sem_RecPatExpr_Ext_7 =
(\ _lhsIcSubst
_lhsIceParentNm
_lhsIchrEvidBindMp
_lhsIchrScopeBindMp
_lhsIfinTyVarMp
_lhsIfinValGam
_lhsImoduleNm
_lhsIrangeMp
_lhsIsysfEnv
_lhsItySigVarMp ->
_lhsIcSubst `seq`
(_lhsIceParentNm `seq`
(_lhsIchrEvidBindMp `seq`
(_lhsIchrScopeBindMp `seq`
(_lhsIfinTyVarMp `seq`
(_lhsIfinValGam `seq`
(_lhsImoduleNm `seq`
(_lhsIrangeMp `seq`
(_lhsIsysfEnv `seq`
(_lhsItySigVarMp `seq`
((case (_lhsIsysfEnv) of
{ _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
(case (_lhsIrangeMp) of
{ _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
(case (_lhsIfinValGam) of
{ _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
(case (_lhsIfinTyVarMp) of
{ _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
(case (_lhsIsysfEnv) of
{ _recPatExprOsysfEnv | _recPatExprOsysfEnv `seq` (True) ->
(case (_lhsIrangeMp) of
{ _recPatExprOrangeMp | _recPatExprOrangeMp `seq` (True) ->
(case (_lhsIfinValGam) of
{ _recPatExprOfinValGam | _recPatExprOfinValGam `seq` (True) ->
(case (_lhsIfinTyVarMp) of
{ _recPatExprOfinTyVarMp | _recPatExprOfinTyVarMp `seq` (True) ->
(case (_lhsItySigVarMp) of
{ _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
(case (_lhsImoduleNm) of
{ _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
(case (_lhsIchrScopeBindMp) of
{ _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
(case (_lhsIchrEvidBindMp) of
{ _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
(case (_lhsIchrScopeBindMp) of
{ _recPatExprOchrScopeBindMp | _recPatExprOchrScopeBindMp `seq` (True) ->
(case (_lhsIchrEvidBindMp) of
{ _recPatExprOchrEvidBindMp | _recPatExprOchrEvidBindMp `seq` (True) ->
(case (_lhsIcSubst) of
{ _recPatExprOcSubst | _recPatExprOcSubst `seq` (True) ->
(case (_lhsItySigVarMp) of
{ _recPatExprOtySigVarMp | _recPatExprOtySigVarMp `seq` (True) ->
(case (_lhsImoduleNm) of
{ _recPatExprOmoduleNm | _recPatExprOmoduleNm `seq` (True) ->
(case (_lhsIceParentNm) of
{ _recPatExprOceParentNm | _recPatExprOceParentNm `seq` (True) ->
(case (recPatExpr_7 _recPatExprOcSubst _recPatExprOceParentNm _recPatExprOchrEvidBindMp _recPatExprOchrScopeBindMp _recPatExprOfinTyVarMp _recPatExprOfinValGam _recPatExprOmoduleNm _recPatExprOrangeMp _recPatExprOsysfEnv _recPatExprOtySigVarMp) of
{ ( _recPatExprIallErrSq,_recPatExprIcSubst,_recPatExprIerrSq,_recPatExprIextNm,_recPatExprIfsRPatL,_recPatExprIgathMentrelFilterMp,_recPatExprIgathTvKiVarMp,_recPatExprIpatCRest,_recPatExprIpp,_recPatExprIppL,_recPatExprIvalCBindL) | True ->
(case (_recPatExprIcSubst) of
{ _patExprOcSubst | _patExprOcSubst `seq` (True) ->
(case (rpatNmNm _patExprIcpNm) of
{ _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
(case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
{ ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
(case (_recPatExprIallErrSq `Seq.union` _patExprIallErrSq) of
{ _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
(case (_patExprIcSubst) of
{ _lhsOcSubst | _lhsOcSubst `seq` (True) ->
(case (_recPatExprIpp) of
{ _pp | _pp `seq` (True) ->
(case (Seq.unions [ _recPatExprIerrSq
, rngLift _range mkNestErr' _pp [_patExprIerrSq, foErrSq _fo_]
]) of
{ _lhsOerrSq | _lhsOerrSq `seq` (True) ->
(case (_recPatExprIextNm) of
{ _lhsOextNm | _lhsOextNm `seq` (True) ->
(case (cSubstApp _patExprIcSubst $ acoreNmHolePred _prUid) of
{ _offset | _offset `seq` (True) ->
(case ((FldComputeOffset _nm _offset,_patExprIrpat) : _recPatExprIfsRPatL) of
{ _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
(case (_recPatExprIgathMentrelFilterMp `mentrelFilterMpUnion` _patExprIgathMentrelFilterMp) of
{ _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
(case (_recPatExprIgathTvKiVarMp `varmpUnion` _patExprIgathTvKiVarMp) of
{ _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
(case (_recPatExprIpatCRest) of
{ _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
(case (_pp) of
{ _lhsOpp | _lhsOpp `seq` (True) ->
(case (ppFld "=" (Just _positionalNm) _nm (pp _nm) _patExprIpp : _recPatExprIppL) of
{ _lhsOppL | _lhsOppL `seq` (True) ->
(case (_recPatExprIvalCBindL ++ _patExprIvalCBindL) of
{ _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
in sem_RecPatExpr_Ext_7)) of
{ ( sem_RecPatExpr_7) | True ->
( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_RecPatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
in sem_RecPatExpr_Ext_6)) of
{ ( sem_RecPatExpr_6) | True ->
( _lhsOpatTyVarMp,_lhsOvalGam,sem_RecPatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
in sem_RecPatExpr_Ext_5)) of
{ ( sem_RecPatExpr_5) | True ->
( _lhsOchrInstDeclSq,_lhsOhasAFldRef,_lhsOpositionalFldNmL,sem_RecPatExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
in sem_RecPatExpr_Ext_4)) of
{ ( sem_RecPatExpr_4) | True ->
( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_RecPatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
in sem_RecPatExpr_Ext_3)) of
{ ( sem_RecPatExpr_3) | True ->
( _lhsOpredSameScopeCounter,sem_RecPatExpr_3) }) }) }) }) }) }) }) }) }) })))))
in sem_RecPatExpr_Ext_2)) of
{ ( sem_RecPatExpr_2) | True ->
( _lhsOgUniq,sem_RecPatExpr_2) }) }) }) }) }) }) })))
in sem_RecPatExpr_Ext_1)) of
{ ( sem_RecPatExpr_1) | True ->
( _lhsOrange,sem_RecPatExpr_1) }) }) }) }) })
sem_RecPatExpr_Expr :: Range ->
T_PatExpr ->
T_RecPatExpr
sem_RecPatExpr_Expr hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
(case (patExpr_) of
{ ( _patExprIrange,patExpr_1) | True ->
(case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
]) of
{ _range | _range `seq` (True) ->
(case (_range) of
{ _lhsOrange | _lhsOrange `seq` (True) ->
(case ((let sem_RecPatExpr_Expr_1 :: T_RecPatExpr_1
sem_RecPatExpr_Expr_1 =
(\ _lhsIgUniq ->
_lhsIgUniq `seq`
((case (_lhsIgUniq) of
{ _patExprOgUniq | _patExprOgUniq `seq` (True) ->
(case (patExpr_1 _patExprOgUniq) of
{ ( _patExprIgUniq,patExpr_2) | True ->
(case (_patExprIgUniq) of
{ _lhsOgUniq | _lhsOgUniq `seq` (True) ->
(case ((let sem_RecPatExpr_Expr_2 :: T_RecPatExpr_2
sem_RecPatExpr_Expr_2 =
(\ _lhsIkiGam
_lhsIlexLev
_lhsIpredSameScopeCounter ->
_lhsIkiGam `seq`
(_lhsIlexLev `seq`
(_lhsIpredSameScopeCounter `seq`
((case (_lhsIpredSameScopeCounter) of
{ _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
(case (_lhsIlexLev) of
{ _patExprOlexLev | _patExprOlexLev `seq` (True) ->
(case (_lhsIkiGam) of
{ _patExprOkiGam | _patExprOkiGam `seq` (True) ->
(case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
{ ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
(case (_patExprIpredSameScopeCounter) of
{ _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
(case ((let sem_RecPatExpr_Expr_3 :: T_RecPatExpr_3
sem_RecPatExpr_Expr_3 =
(\ _lhsIkiVarMp
_lhsIopts
_lhsIpolGam
_lhsIpolVarMp
_lhsIpredScope
_lhsItyGam
_lhsItyKiGam
_lhsItyKiGlobFreeTvarS ->
_lhsIkiVarMp `seq`
(_lhsIopts `seq`
(_lhsIpolGam `seq`
(_lhsIpolVarMp `seq`
(_lhsIpredScope `seq`
(_lhsItyGam `seq`
(_lhsItyKiGam `seq`
(_lhsItyKiGlobFreeTvarS `seq`
((case (_lhsItyKiGlobFreeTvarS) of
{ _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
(case (_lhsItyKiGam) of
{ _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
(case (_lhsItyGam) of
{ _patExprOtyGam | _patExprOtyGam `seq` (True) ->
(case (_lhsIpredScope) of
{ _patExprOpredScope | _patExprOpredScope `seq` (True) ->
(case (_lhsIpolVarMp) of
{ _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
(case (_lhsIpolGam) of
{ _patExprOpolGam | _patExprOpolGam `seq` (True) ->
(case (_lhsIopts) of
{ _patExprOopts | _patExprOopts `seq` (True) ->
(case (_lhsIkiVarMp) of
{ _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
(case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
{ ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
(case (_patExprIkiVarMp) of
{ _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
(case (_patExprIpolVarMp) of
{ _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
(case (_patExprItyGam) of
{ _lhsOtyGam | _lhsOtyGam `seq` (True) ->
(case (_patExprItyKiGam) of
{ _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
(case ((let sem_RecPatExpr_Expr_4 :: T_RecPatExpr_4
sem_RecPatExpr_Expr_4 =
(\ _lhsIclGam
_lhsIdataGam
_lhsIfinKiVarMp
_lhsIfinTyKiGam
_lhsIpositionalFldNmL
_lhsItyTyTySigFreeTvarS ->
_lhsIclGam `seq`
(_lhsIdataGam `seq`
(_lhsIfinKiVarMp `seq`
(_lhsIfinTyKiGam `seq`
(_lhsIpositionalFldNmL `seq`
(_lhsItyTyTySigFreeTvarS `seq`
((case (_lhsItyTyTySigFreeTvarS) of
{ _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
(case (_lhsIfinTyKiGam) of
{ _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
(case (_lhsIfinKiVarMp) of
{ _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
(case (_lhsIdataGam) of
{ _patExprOdataGam | _patExprOdataGam `seq` (True) ->
(case (_lhsIclGam) of
{ _patExprOclGam | _patExprOclGam `seq` (True) ->
(case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
{ ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
(case (_patExprIchrInstDeclSq) of
{ _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
(case (False) of
{ _lhsOhasAFldRef | _lhsOhasAFldRef `seq` (True) ->
(case (_lhsIpositionalFldNmL) of
{ _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
(case ((let sem_RecPatExpr_Expr_5 :: T_RecPatExpr_5
sem_RecPatExpr_Expr_5 =
(\ _lhsIfiOpts
_lhsIknTy
_lhsImatchOnFld
_lhsIpatTyVarMp
_lhsItySigGam
_lhsIvalGam ->
_lhsIfiOpts `seq`
(_lhsIknTy `seq`
(_lhsImatchOnFld `seq`
(_lhsIpatTyVarMp `seq`
(_lhsItySigGam `seq`
(_lhsIvalGam `seq`
((case (_lhsIvalGam) of
{ _patExprOvalGam | _patExprOvalGam `seq` (True) ->
(case (_lhsItySigGam) of
{ _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
(case (_lhsIpatTyVarMp) of
{ _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
(case (_lhsIknTy) of
{ _patExprOknTy | _patExprOknTy `seq` (True) ->
(case (_lhsIfiOpts) of
{ _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
(case (True) of
{ _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
(case ([]) of
{ _patExprOknTyL | _patExprOknTyL `seq` (True) ->
(case (patExpr_5 _patExprOvalGam) of
{ ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
(case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
{ ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
(case (_patExprIpatTyVarMp) of
{ _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
(case (_patExprIvalGam) of
{ _lhsOvalGam | _lhsOvalGam `seq` (True) ->
(case ((let sem_RecPatExpr_Expr_6 :: T_RecPatExpr_6
sem_RecPatExpr_Expr_6 =
(\ _lhsIchrStore
_lhsIclDfGam
_lhsItvKiVarMp
_lhsItyTyGlobFreeTvarS
_lhsItyVarMp
_lhsIvalTyGlobFreeTvarS ->
_lhsIchrStore `seq`
(_lhsIclDfGam `seq`
(_lhsItvKiVarMp `seq`
(_lhsItyTyGlobFreeTvarS `seq`
(_lhsItyVarMp `seq`
(_lhsIvalTyGlobFreeTvarS `seq`
((case (_lhsIvalTyGlobFreeTvarS) of
{ _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
(case (_lhsItyVarMp) of
{ _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
(case (_lhsItyTyGlobFreeTvarS) of
{ _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
(case (_lhsItvKiVarMp) of
{ _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
(case (_lhsIclDfGam) of
{ _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
(case (_lhsIchrStore) of
{ _patExprOchrStore | _patExprOchrStore `seq` (True) ->
(case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
{ ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
(case (_patExprIgathCnstrMp) of
{ _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
(case (_patExprIgathRangeMp) of
{ _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
(case (_patExprIscopeGam) of
{ _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
(case (_patExprIty) of
{ _lhsOty | _lhsOty `seq` (True) ->
(case (_patExprItyVarMp) of
{ _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
(case ((let sem_RecPatExpr_Expr_7 :: T_RecPatExpr_7
sem_RecPatExpr_Expr_7 =
(\ _lhsIcSubst
_lhsIceParentNm
_lhsIchrEvidBindMp
_lhsIchrScopeBindMp
_lhsIfinTyVarMp
_lhsIfinValGam
_lhsImoduleNm
_lhsIrangeMp
_lhsIsysfEnv
_lhsItySigVarMp ->
_lhsIcSubst `seq`
(_lhsIceParentNm `seq`
(_lhsIchrEvidBindMp `seq`
(_lhsIchrScopeBindMp `seq`
(_lhsIfinTyVarMp `seq`
(_lhsIfinValGam `seq`
(_lhsImoduleNm `seq`
(_lhsIrangeMp `seq`
(_lhsIsysfEnv `seq`
(_lhsItySigVarMp `seq`
((case (_lhsIsysfEnv) of
{ _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
(case (_lhsIrangeMp) of
{ _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
(case (_lhsIfinValGam) of
{ _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
(case (_lhsIfinTyVarMp) of
{ _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
(case (_lhsItySigVarMp) of
{ _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
(case (_lhsImoduleNm) of
{ _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
(case (_lhsIchrScopeBindMp) of
{ _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
(case (_lhsIchrEvidBindMp) of
{ _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
(case (_lhsIceParentNm) of
{ _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
(case (_lhsIcSubst) of
{ _patExprOcSubst | _patExprOcSubst `seq` (True) ->
(case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
{ ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
(case (_patExprIallErrSq) of
{ _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
(case (_patExprIcSubst) of
{ _lhsOcSubst | _lhsOcSubst `seq` (True) ->
(case (_patExprIerrSq) of
{ _lhsOerrSq | _lhsOerrSq `seq` (True) ->
(case (hsnUnknown) of
{ _lhsOextNm | _lhsOextNm `seq` (True) ->
(case (_patExprIfsRPatL) of
{ _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
(case (_patExprIgathMentrelFilterMp) of
{ _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
(case (_patExprIgathTvKiVarMp) of
{ _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
(case (_patExprIpatCRest) of
{ _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
(case (_patExprIpp) of
{ _pp | _pp `seq` (True) ->
(case (_pp) of
{ _lhsOpp | _lhsOpp `seq` (True) ->
(case ([]) of
{ _lhsOppL | _lhsOppL `seq` (True) ->
(case (_patExprIvalCBindL) of
{ _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
in sem_RecPatExpr_Expr_7)) of
{ ( sem_RecPatExpr_7) | True ->
( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_RecPatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
in sem_RecPatExpr_Expr_6)) of
{ ( sem_RecPatExpr_6) | True ->
( _lhsOpatTyVarMp,_lhsOvalGam,sem_RecPatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }))))))))
in sem_RecPatExpr_Expr_5)) of
{ ( sem_RecPatExpr_5) | True ->
( _lhsOchrInstDeclSq,_lhsOhasAFldRef,_lhsOpositionalFldNmL,sem_RecPatExpr_5) }) }) }) }) }) }) }) }) }) }))))))))
in sem_RecPatExpr_Expr_4)) of
{ ( sem_RecPatExpr_4) | True ->
( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_RecPatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
in sem_RecPatExpr_Expr_3)) of
{ ( sem_RecPatExpr_3) | True ->
( _lhsOpredSameScopeCounter,sem_RecPatExpr_3) }) }) }) }) }) })))))
in sem_RecPatExpr_Expr_2)) of
{ ( sem_RecPatExpr_2) | True ->
( _lhsOgUniq,sem_RecPatExpr_2) }) }) }) })))
in sem_RecPatExpr_Expr_1)) of
{ ( sem_RecPatExpr_1) | True ->
( _lhsOrange,sem_RecPatExpr_1) }) }) }) })