Skip to content

Commit 76d0838

Browse files
committed
Merge pull request #775 from dotty-staging/fix-lv
LazyVals: fix volatile lazy vals initialization
2 parents fbc1609 + f0b13b1 commit 76d0838

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/dotty/tools/dotc/transform/LazyVals.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,11 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer {
280280
val handlerSymbol = ctx.newSymbol(methodSymbol, nme.ANON_FUN, Flags.Synthetic,
281281
MethodType(List(nme.x_1), List(defn.ThrowableType), defn.IntType))
282282
val caseSymbol = ctx.newSymbol(methodSymbol, nme.DEFAULT_EXCEPTION_NAME, Flags.Synthetic, defn.ThrowableType)
283-
val complete = setFlagState.appliedTo(thiz, offset, initState, Literal(Constant(ord)))
283+
val triggerRetry = setFlagState.appliedTo(thiz, offset, initState, Literal(Constant(ord)))
284+
val complete = setFlagState.appliedTo(thiz, offset, computedState, Literal(Constant(ord)))
285+
284286
val handler = CaseDef(Bind(caseSymbol, ref(caseSymbol)), EmptyTree,
285-
Block(List(complete), Throw(ref(caseSymbol))
287+
Block(List(triggerRetry), Throw(ref(caseSymbol))
286288
))
287289

288290
val compute = ref(resultSymbol).becomes(rhs)

0 commit comments

Comments
 (0)