Skip to content

Commit 6edb56b

Browse files
committed
features for slayers/
1 parent c028984 commit 6edb56b

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/main/scala/viper/gobra/ast/internal/transform/IntConversionInferenceTransform.scala

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,9 @@ object IntConversionInferenceTransform extends InternalTransform {
430430
case o: in.Old =>
431431
val newOp = transformExpr(originalProg)(o.operand)
432432
in.Old(newOp)(o.info)
433+
case o: in.LabeledOld =>
434+
val newOp = transformExpr(originalProg)(o.operand)
435+
in.LabeledOld(o.label, newOp)(o.info)
433436
case u: in.Unfolding =>
434437
val newAcc = transformAccess(originalProg)(u.acc)
435438
val newExpr = transformExprToIntendedType(originalProg)(u.in, u.typ)
@@ -596,6 +599,15 @@ object IntConversionInferenceTransform extends InternalTransform {
596599
case u@in.Unfold(acc) =>
597600
val newAcc = transformAccess(originalProg)(acc)
598601
in.Unfold(newAcc)(u.info)
602+
case o@in.Outline(name, pres, posts, terminationMeasures, backendAnnotations, body, trusted) =>
603+
val newPres = pres map transformAssert(originalProg)
604+
val newPosts = posts map transformAssert(originalProg)
605+
val newMeasuers = terminationMeasures map transformTermMeasure(originalProg)
606+
val newBody = transformStmt(originalProg)(body)
607+
in.Outline(name, newPres, newPosts, newMeasuers, backendAnnotations, newBody, trusted)(o.info)
608+
case a@in.ApplyWand(wand) =>
609+
val newWand = transformAssert(originalProg)(wand).asInstanceOf[in.MagicWand]
610+
in.ApplyWand(newWand)(a.info)
599611
case m@in.MakeSlice(target, typeParam, lenArg, capArg) =>
600612
// TODO: there's already some alternative means of preventing this error in the slice encoding.
601613
// Chose a single solution
@@ -678,6 +690,9 @@ object IntConversionInferenceTransform extends InternalTransform {
678690
val newPres = pres map transformAssert(originalProg)
679691
val newPosts = posts map transformAssert(originalProg)
680692
in.SpecImplementationProof(newClosure, newSpec, newBody, newPres, newPosts)(p.info)
693+
case l@in.SafeMapLookup(resTarget, successTarget, mapLookup) =>
694+
val newMapLookup = transformIndexedExpression(originalProg)(mapLookup)
695+
in.SafeMapLookup(resTarget, successTarget, newMapLookup)(l.info)
681696

682697
case c@in.ClosureCall(targets, closure, args, spec) =>
683698
// TODO: improve, transformations missing

0 commit comments

Comments
 (0)