Skip to content

Commit

Permalink
Merge branch 'master' into condition-exp
Browse files Browse the repository at this point in the history
  • Loading branch information
marcoeilers authored Jan 21, 2024
2 parents 6bbd5d6 + 34062b3 commit 527932b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
13 changes: 6 additions & 7 deletions src/main/scala/rules/Evaluator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ object evaluator extends EvaluationRules {
Q(s2, fvfLookup, v1)}
}
case _ =>
val (_, smDef1, pmDef1) =
val (s2, smDef1, pmDef1) =
quantifiedChunkSupporter.heapSummarisingMaps(
s = s1,
resource = fa.field,
Expand All @@ -236,27 +236,26 @@ object evaluator extends EvaluationRules {
optSmDomainDefinitionCondition = None,
optQVarsInstantiations = None,
v = v1)
if (s1.heapDependentTriggers.contains(fa.field)){
if (s2.heapDependentTriggers.contains(fa.field)){
val trigger = FieldTrigger(fa.field.name, smDef1.sm, tRcvr)
v1.decider.assume(trigger)
}
val permCheck =
if (s1.triggerExp) {
if (s2.triggerExp) {
True
} else {
val totalPermissions = PermLookup(fa.field.name, pmDef1.pm, tRcvr)
IsPositive(totalPermissions)
}
v1.decider.assert(permCheck) {
case false =>
createFailure(pve dueTo InsufficientPermission(fa), v1, s1)
createFailure(pve dueTo InsufficientPermission(fa), v1, s2)
case true =>
val smLookup = Lookup(fa.field.name, smDef1.sm, tRcvr)
val fr2 =
s1.functionRecorder.recordSnapshot(fa, v1.decider.pcs.branchConditions, smLookup)
s2.functionRecorder.recordSnapshot(fa, v1.decider.pcs.branchConditions, smLookup)
.recordFvfAndDomain(smDef1)
val s3 = s1.copy(functionRecorder = fr2/*,
smCache = smCache1*/)
val s3 = s2.copy(functionRecorder = fr2)
Q(s3, smLookup, v1)}
}})

Expand Down
13 changes: 13 additions & 0 deletions src/test/scala/SiliconTestsSmokeDetection.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//
// Copyright (c) 2011-2022 ETH Zurich.

package viper.silicon.tests

class SiliconTestsSmokeDetection extends SiliconTests {
override val testDirectories: Seq[String] = Seq("smoke")

override val commandLineArguments: Seq[String] = Seq("--enableSmokeDetection")
}

0 comments on commit 527932b

Please sign in to comment.