@@ -4300,7 +4300,7 @@ and GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx
43004300let targetMarkBeforeBinds = CG.GenerateDelayMark cgbuf" targetBeforeBinds"
43014301let targetMarkAfterBinds = CG.GenerateDelayMark cgbuf" targetAfterBinds"
43024302let startScope , endScope as scopeMarks = StartDelayedLocalScope" targetBinds" cgbuf
4303- let binds = mkInvisibleFlatBindings vs es
4303+ let binds = mkInvisibleBinds vs es
43044304let eenvAtTarget = AllocStorageForBinds cenv cgbuf scopeMarks eenv binds
43054305let targetInfo = ( targetMarkBeforeBinds, targetMarkAfterBinds, eenvAtTarget, successExpr, spTarget, repeatSP, vs, binds, startScope, endScope)
43064306
@@ -4353,18 +4353,18 @@ and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defau
43534353 repeatSP()
43544354match caseswith
43554355// optimize a test against a boolean value, i.e. the all-important if-then-else
4356- | TCase( Test .Const( Const.Bool b), successTree) :: _ ->
4356+ | TCase( DecisionTreeTest .Const( Const.Bool b), successTree) :: _ ->
43574357let failureTree = ( match defaultTargetOptwith None-> cases.Tail.Head.CaseTree| Some d-> d)
43584358 GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e None eenv( if bthen successTreeelse failureTree) ( if bthen failureTreeelse successTree) targets repeatSP targetInfos sequel
43594359
43604360// // Remove a single test for a union case . Union case tests are always exa
4361- //| [ TCase(Test .UnionCase _, successTree) ] when (defaultTargetOpt.IsNone) ->
4361+ //| [ TCase(DecisionTreeTest .UnionCase _, successTree) ] when (defaultTargetOpt.IsNone) ->
43624362// GenDecisionTreeAndTargetsInner cenv cgbuf inplabOpt stackAtTargets eenv successTree targets repeatSP targetInfos sequel
43634363// //GenDecisionTree cenv eenv.cloc cgbuf stackAtTargets e (Some (pop 1, Push [cenv.g.ilg.typ_Bool], Choice1Of2 (avoidHelpers, cuspec, idx))) eenv successTree failureTree targets repeatSP targetInfos sequel
43644364
43654365// Optimize a single test for a union case to an "isdata" test - much
43664366// more efficient code, and this case occurs in the generated equality testers where perf is important
4367- | TCase( Test .UnionCase( c, tyargs), successTree) :: restwhen rest.Length= ( match defaultTargetOptwith None-> 1 | Some_ -> 0 ) ->
4367+ | TCase( DecisionTreeTest .UnionCase( c, tyargs), successTree) :: restwhen rest.Length= ( match defaultTargetOptwith None-> 1 | Some_ -> 0 ) ->
43684368let failureTree =
43694369match defaultTargetOptwith
43704370| None-> rest.Head.CaseTree
@@ -4380,48 +4380,48 @@ and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defau
43804380match firstDiscrimwith
43814381// Iterated tests, e.g. exception constructors, nulltests, typetests and active patterns.
43824382// These should always have one positive and one negative branch
4383- | Test .IsInst_
4384- | Test .ArrayLength_
4385- | Test .IsNull
4386- | Test .Const( Const.Zero) ->
4387- if List.length cases<> 1 || Option.isNone defaultTargetOptthen failwith" internal error: GenDecisionTreeSwitch:Test .IsInst/isnull/query"
4383+ | DecisionTreeTest .IsInst_
4384+ | DecisionTreeTest .ArrayLength_
4385+ | DecisionTreeTest .IsNull
4386+ | DecisionTreeTest .Const( Const.Zero) ->
4387+ if List.length cases<> 1 || Option.isNone defaultTargetOptthen failwith" internal error: GenDecisionTreeSwitch:DecisionTreeTest .IsInst/isnull/query"
43884388let bi =
43894389match firstDiscrimwith
4390- | Test .Const( Const.Zero) ->
4390+ | DecisionTreeTest .Const( Const.Zero) ->
43914391 GenExpr cenv cgbuf eenv SPSuppress e Continue
43924392 BI_ brfalse
4393- | Test .IsNull->
4393+ | DecisionTreeTest .IsNull->
43944394 GenExpr cenv cgbuf eenv SPSuppress e Continue
43954395let srcTy = tyOfExpr cenv.g e
43964396if isTyparTy cenv.g srcTythen
43974397let ilFromTy = GenType cenv.amap m eenv.tyenv srcTy
43984398 CG.EmitInstr cgbuf( pop1 ) ( Push[ cenv.g.ilg.typ_ Object]) ( I_ box ilFromTy)
43994399 BI_ brfalse
4400- | Test .IsInst(_ srcty, tgty) ->
4400+ | DecisionTreeTest .IsInst(_ srcty, tgty) ->
44014401let e = mkCallTypeTest cenv.g m tgty e
44024402 GenExpr cenv cgbuf eenv SPSuppress e Continue
44034403 BI_ brtrue
44044404| _ -> failwith" internal error: GenDecisionTreeSwitch"
44054405 CG.EmitInstr cgbuf( pop1 ) Push0( I_ brcmp( bi,( List.head caseLabels) .CodeLabel))
44064406 GenDecisionTreeCases cenv cgbuf stackAtTargets eenv targets repeatSP targetInfos defaultTargetOpt caseLabels cases sequel
44074407
4408- | Test .ActivePatternCase_ -> error( InternalError( " internal error in codegen:Test .ActivePatternCase" , switchm))
4409- | Test .UnionCase( hdc, tyargs) ->
4408+ | DecisionTreeTest .ActivePatternCase_ -> error( InternalError( " internal error in codegen:DecisionTreeTest .ActivePatternCase" , switchm))
4409+ | DecisionTreeTest .UnionCase( hdc, tyargs) ->
44104410 GenExpr cenv cgbuf eenv SPSuppress e Continue
44114411let cuspec = GenUnionSpec cenv.amap m eenv.tyenv hdc.TyconRef tyargs
44124412let dests =
4413- if cases.Length<> caseLabels.Lengththen failwith" internal error:Test .UnionCase"
4413+ if cases.Length<> caseLabels.Lengththen failwith" internal error:DecisionTreeTest .UnionCase"
44144414( cases, caseLabels) ||> List.map2( fun case label ->
44154415match casewith
4416- | TCase( Test .UnionCase( c,_),_) -> ( c.Index, label.CodeLabel)
4416+ | TCase( DecisionTreeTest .UnionCase( c,_),_) -> ( c.Index, label.CodeLabel)
44174417| _ -> failwith" error: mixed constructor/const test?" )
44184418
44194419let avoidHelpers = entityRefInThisAssembly cenv.g.compilingFslib hdc.TyconRef
44204420 EraseUnions.emitDataSwitch cenv.g.ilg( UnionCodeGen cgbuf) ( avoidHelpers, cuspec, dests)
44214421 CG.EmitInstrs cgbuf( pop1 ) Push0[ ] // push/pop to match the line above
44224422 GenDecisionTreeCases cenv cgbuf stackAtTargets eenv targets repeatSP targetInfos defaultTargetOpt caseLabels cases sequel
44234423
4424- | Test .Const c->
4424+ | DecisionTreeTest .Const c->
44254425 GenExpr cenv cgbuf eenv SPSuppress e Continue
44264426match cwith
44274427| Const.Bool_ -> failwith" should have been done earlier"
@@ -4437,7 +4437,7 @@ and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defau
44374437( cases, caseLabels) ||> List.map2( fun case label ->
44384438let i =
44394439match case.Discriminatorwith
4440- Test .Const c'->
4440+ DecisionTreeTest .Const c'->
44414441match c'with
44424442| Const.SByte i-> int32 i
44434443| Const.Int16 i-> int32 i