77package viper .silicon .rules
88
99import viper .silver .ast
10- import viper .silver .verifier .{CounterexampleTransformer , PartialVerificationError }
10+ import viper .silver .verifier .{CounterexampleTransformer , PartialVerificationError , TypecheckerWarning }
1111import viper .silver .verifier .errors .{ErrorWrapperWithExampleTransformer , PreconditionInAppFalse }
1212import viper .silver .verifier .reasons ._
1313import viper .silicon .common .collections .immutable .InsertionOrderedSet
@@ -23,6 +23,7 @@ import viper.silicon.verifier.Verifier
2323import viper .silicon .{Map , TriggerSets }
2424import viper .silicon .interfaces .state .{ChunkIdentifer , NonQuantifiedChunk }
2525import viper .silicon .logger .records .data .{CondExpRecord , EvaluateRecord , ImpliesRecord }
26+ import viper .silver .reporter .WarningsDuringTypechecking
2627import viper .silver .ast .WeightedQuantifier
2728
2829/* TODO: With the current design w.r.t. parallelism, eval should never "move" an execution
@@ -1312,7 +1313,9 @@ object evaluator extends EvaluationRules {
13121313 v.decider.assume(pcDelta)
13131314 Q (s, cachedTriggerTerms ++ remainingTriggerTerms, v)
13141315 case _ =>
1315- // bookkeeper.logfiles("evalTrigger").println(s"Couldn't evaluate some trigger expressions:\n $remainingTriggerExpressions\nReason:\n $r")
1316+ for (e <- remainingTriggerExpressions)
1317+ v.reporter.report(WarningsDuringTypechecking (Seq (
1318+ TypecheckerWarning (s " Cannot use trigger $e, since it is not evaluated while evaluating the body of the quantifier " , e.pos))))
13161319 Q (s, cachedTriggerTerms, v)
13171320 }
13181321 }
0 commit comments