@@ -117,16 +117,22 @@ trait ExprBuilder {
117
117
* <mkResumeApply>
118
118
* }
119
119
*/
120
- def ifIsFailureTree [T : WeakTypeTag ](tryReference : => Tree ) =
121
- If (futureSystemOps.tryyIsFailure(c.Expr [futureSystem.Tryy [T ]](tryReference)).tree,
122
- Block (toList(futureSystemOps.completeProm[T ](
123
- c.Expr [futureSystem.Prom [T ]](symLookup.memberRef(name.result)),
124
- c.Expr [futureSystem.Tryy [T ]](
125
- TypeApply (Select (tryReference, newTermName(" asInstanceOf" )),
126
- List (TypeTree (futureSystemOps.tryType[T ]))))).tree),
127
- Return (literalUnit)),
128
- Block (List (tryGetTree(tryReference)), mkStateTree(nextState, symLookup))
129
- )
120
+ def ifIsFailureTree [T : WeakTypeTag ](tryReference : => Tree ) = {
121
+ val getAndUpdateState = Block (List (tryGetTree(tryReference)), mkStateTree(nextState, symLookup))
122
+ if (asyncBase.futureSystem.emitTryCatch) {
123
+ If (futureSystemOps.tryyIsFailure(c.Expr [futureSystem.Tryy [T ]](tryReference)).tree,
124
+ Block (toList(futureSystemOps.completeProm[T ](
125
+ c.Expr [futureSystem.Prom [T ]](symLookup.memberRef(name.result)),
126
+ c.Expr [futureSystem.Tryy [T ]](
127
+ TypeApply (Select (tryReference, newTermName(" asInstanceOf" )),
128
+ List (TypeTree (futureSystemOps.tryType[T ]))))).tree),
129
+ Return (literalUnit)),
130
+ getAndUpdateState
131
+ )
132
+ } else {
133
+ getAndUpdateState
134
+ }
135
+ }
130
136
131
137
override def mkOnCompleteHandler [T : WeakTypeTag ]: Option [CaseDef ] = {
132
138
Some (mkHandlerCase(onCompleteState, List (ifIsFailureTree[T ](Ident (symLookup.applyTrParam)))))
@@ -402,7 +408,7 @@ trait ExprBuilder {
402
408
val stateMemberRef = symLookup.memberRef(name.state)
403
409
val body = Match (stateMemberRef, mkCombinedHandlerCases[T ] ++ initStates.flatMap(_.mkOnCompleteHandler[T ]) ++ List (CaseDef (Ident (nme.WILDCARD ), EmptyTree , Throw (Apply (Select (New (Ident (defn.IllegalStateExceptionClass )), termNames.CONSTRUCTOR ), List ())))))
404
410
405
- Try (
411
+ maybeTry (
406
412
body,
407
413
List (
408
414
CaseDef (
0 commit comments