@@ -1416,13 +1416,15 @@ object evaluator extends EvaluationRules {
14161416 triggerAxioms = triggerAxioms ++ axioms
14171417 smDefs = smDefs ++ smDef
14181418 case pa : ast.PredicateAccess if s.heapDependentTriggers.contains(pa.loc(s.program)) =>
1419- val (axioms, trigs, _) = generatePredicateTrigger(pa, s, pve, v)
1419+ val (axioms, trigs, _, smDef ) = generatePredicateTrigger(pa, s, pve, v)
14201420 triggers = triggers ++ trigs
14211421 triggerAxioms = triggerAxioms ++ axioms
1422+ smDefs = smDefs ++ smDef
14221423 case wand : ast.MagicWand if s.heapDependentTriggers.contains(MagicWandIdentifier (wand, s.program)) =>
1423- val (axioms, trigs, _) = generateWandTrigger(wand, s, pve, v)
1424+ val (axioms, trigs, _, smDef ) = generateWandTrigger(wand, s, pve, v)
14241425 triggers = triggers ++ trigs
14251426 triggerAxioms = triggerAxioms ++ axioms
1427+ smDefs = smDefs ++ smDef
14261428 case e => evalTrigger(s, Seq (e), pve, v)((_, t, _) => {
14271429 triggers = triggers ++ t
14281430 Success ()
@@ -1502,7 +1504,11 @@ object evaluator extends EvaluationRules {
15021504 }
15031505
15041506 /* TODO: Try to unify with generateFieldTrigger above, or at least with generateWandTrigger below */
1505- private def generatePredicateTrigger (pa : ast.PredicateAccess , s : State , pve : PartialVerificationError , v : Verifier ): (Seq [Term ], Seq [Term ], PredicateTrigger ) = {
1507+ private def generatePredicateTrigger (pa : ast.PredicateAccess ,
1508+ s : State ,
1509+ pve : PartialVerificationError ,
1510+ v : Verifier )
1511+ : (Seq [Term ], Seq [Term ], PredicateTrigger , Seq [SnapshotMapDefinition ]) = {
15061512 var axioms = Seq .empty[Term ]
15071513 var triggers = Seq .empty[Term ]
15081514 var mostRecentTrig : PredicateTrigger = null
@@ -1524,11 +1530,15 @@ object evaluator extends EvaluationRules {
15241530 Success ()
15251531 })
15261532
1527- (axioms, triggers, mostRecentTrig)
1533+ (axioms, triggers, mostRecentTrig, Seq (smDef1) )
15281534 }
15291535
15301536 /* TODO: See comments for generatePredicateTrigger above */
1531- private def generateWandTrigger (wand : ast.MagicWand , s : State , pve : PartialVerificationError , v : Verifier ): (Seq [Term ], Seq [Term ], PredicateTrigger ) = {
1537+ private def generateWandTrigger (wand : ast.MagicWand ,
1538+ s : State ,
1539+ pve : PartialVerificationError ,
1540+ v : Verifier )
1541+ : (Seq [Term ], Seq [Term ], PredicateTrigger , Seq [SnapshotMapDefinition ]) = {
15321542 var axioms = Seq .empty[Term ]
15331543 var triggers = Seq .empty[Term ]
15341544 var mostRecentTrig : PredicateTrigger = null
@@ -1552,7 +1562,7 @@ object evaluator extends EvaluationRules {
15521562 Success ()
15531563 })
15541564
1555- (axioms, triggers, mostRecentTrig)
1565+ (axioms, triggers, mostRecentTrig, Seq (smDef1) )
15561566 }
15571567
15581568 /* Evaluate a sequence of expressions in Order
0 commit comments