Skip to content

Commit edb5d07

Browse files
authored
Merge pull request #583 from viperproject/error-scoping
Scope for functions, predicates, and methods (of ASTs)
2 parents 5e10d5a + 32be5f4 commit edb5d07

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

src/main/scala/verifier/DefaultMasterVerifier.scala

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import viper.silicon.supporters._
2727
import viper.silicon.supporters.functions.DefaultFunctionVerificationUnitProvider
2828
import viper.silicon.supporters.qps._
2929
import viper.silicon.utils.Counter
30-
import viper.silver.ast.BackendType
30+
import viper.silver.ast.{BackendType, Member}
3131
import viper.silver.ast.utility.rewriter.Traverse
3232
import viper.silver.cfg.silver.SilverCfg
3333
import viper.silver.reporter.{ConfigurationConfirmation, ExecutionTraceReport, Reporter, VerificationResultMessage}
@@ -194,7 +194,7 @@ class DefaultMasterVerifier(config: Config, override val reporter: Reporter)
194194
val elapsed = System.currentTimeMillis() - startTime
195195
reporter report VerificationResultMessage(s"silicon", function, elapsed, condenseToViperResult(results))
196196
logger debug s"Silicon finished verification of function `${function.name}` in ${viper.silver.reporter.format.formatMillisReadably(elapsed)} seconds with the following result: ${condenseToViperResult(results).toString}"
197-
results
197+
setErrorScope(results, function)
198198
})
199199

200200
val predicateVerificationResults = predicateSupporter.units.toList flatMap (predicate => {
@@ -203,7 +203,7 @@ class DefaultMasterVerifier(config: Config, override val reporter: Reporter)
203203
val elapsed = System.currentTimeMillis() - startTime
204204
reporter report VerificationResultMessage(s"silicon", predicate, elapsed, condenseToViperResult(results))
205205
logger debug s"Silicon finished verification of predicate `${predicate.name}` in ${viper.silver.reporter.format.formatMillisReadably(elapsed)} seconds with the following result: ${condenseToViperResult(results).toString}"
206-
results
206+
setErrorScope(results, predicate)
207207
})
208208

209209
decider.prover.stop()
@@ -231,7 +231,7 @@ class DefaultMasterVerifier(config: Config, override val reporter: Reporter)
231231
reporter report VerificationResultMessage(s"silicon", method, elapsed, condenseToViperResult(results))
232232
logger debug s"Silicon finished verification of method `${method.name}` in ${viper.silver.reporter.format.formatMillisReadably(elapsed)} seconds with the following result: ${condenseToViperResult(results).toString}"
233233

234-
results
234+
setErrorScope(results, method)
235235
})
236236
}) ++ cfgs.map(cfg => {
237237
val s = createInitialState(cfg, program)/*.copy(parallelizeBranches = true)*/ /* [BRANCH-PARALLELISATION] */
@@ -468,4 +468,12 @@ class DefaultMasterVerifier(config: Config, override val reporter: Reporter)
468468
})
469469
}
470470
}
471+
472+
private def setErrorScope(results: Seq[VerificationResult], scope: Member): Seq[VerificationResult] = {
473+
results.foreach {
474+
case f: Failure => f.message.scope = Some(scope)
475+
case _ =>
476+
}
477+
results
478+
}
471479
}

0 commit comments

Comments
 (0)