Skip to content

Commit 711507c

Browse files
authored
Merge pull request #278 from viperproject/meilers_plugin_aware_reporter
Adapting ActorReporter to Silver changes
2 parents 8af3324 + e67f458 commit 711507c

5 files changed

Lines changed: 6 additions & 37 deletions

File tree

carbon

Submodule carbon updated 1 file

silicon

Submodule silicon updated 1 file

src/main/scala/viper/server/core/AstWorker.scala

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ import viper.server.ViperConfig
1111
import viper.server.utility.AstGenerator
1212
import viper.server.vsi.AstConstructionException
1313
import viper.silver.ast.Program
14-
import viper.silver.reporter.{Entity, ExceptionReport}
15-
import viper.silver.verifier.VerificationResult
14+
import viper.silver.reporter.ExceptionReport
1615

1716

1817
object ViperFileNotFoundException extends AstConstructionException
@@ -63,10 +62,5 @@ class AstWorker(val arg_list: List[String],
6362
ast_option
6463
}
6564

66-
override def mapEntityVerificationResult(entity: Entity, result: VerificationResult): VerificationResult = {
67-
logger.error(s"unexpected operation: AstWorker received an entity success or entity failure message, which should not occur while constructing a Viper AST")
68-
???
69-
}
70-
7165
override def call(): Option[Program] = constructAst(arg_list)
7266
}

src/main/scala/viper/server/core/MessageReportingTask.scala

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ package viper.server.core
88

99
import ch.qos.logback.classic.Logger
1010
import viper.server.vsi.MessageStreamingTask
11-
import viper.silver.reporter.{Entity, EntityFailureMessage, EntitySuccessMessage, Message, Reporter, Time, VerificationResultMessage}
11+
import viper.silver.reporter.{Entity, EntityFailureMessage, EntitySuccessMessage, Message, PluginAwareReporter, Time, VerificationResultMessage}
1212
import viper.silver.verifier.{Success, VerificationResult}
1313

1414
trait MessageReportingTask[T] extends MessageStreamingTask[T] with ViperPost {
@@ -24,34 +24,18 @@ trait MessageReportingTask[T] extends MessageStreamingTask[T] with ViperPost {
2424
super.registerTaskEnd(success, logger)
2525
}
2626

27-
/** implementations of this functions should let plugins map verification results for each entity */
28-
def mapEntityVerificationResult(entity: Entity, result: VerificationResult): VerificationResult
29-
30-
private def processEntityResultMessage(verifier: String, entity: Entity,
31-
verificationTime: Time, result: VerificationResult, cached: Boolean): Unit = {
32-
val mappedResult = mapEntityVerificationResult(entity, result)
33-
enqueueMessage(VerificationResultMessage(verifier, entity, verificationTime, mappedResult, cached))
34-
}
35-
3627
// Implementation of the Reporter interface used by the backend.
37-
class ActorReporter(tag: String) extends Reporter {
28+
class ActorReporter(tag: String) extends PluginAwareReporter {
3829
val name = s"ViperServer_$tag"
3930

40-
def report(msg: Message): Unit = {
31+
def doReport(msg: Message): Unit = {
4132
logger.trace(s"ActorReport received msg $msg")
4233
msg match {
4334
case m: EntityFailureMessage if m.concerning.info.isCached =>
4435
case m: EntitySuccessMessage if m.concerning.info.isCached =>
4536
// Do not re-send messages about AST nodes that have been cached;
4637
// the information about these nodes is going to be reported anyway.
4738

48-
// to properly support streaming of (partial) verification results, we must invoke
49-
// the plugins to do the post-processing and enqueue the resulting message:
50-
case EntitySuccessMessage(verifier, entity, verificationTime, cached) =>
51-
processEntityResultMessage(verifier, entity, verificationTime, Success, cached)
52-
case EntityFailureMessage(verifier, entity, verificationTime, failure, cached) =>
53-
processEntityResultMessage(verifier, entity, verificationTime, failure, cached)
54-
5539
case m =>
5640
enqueueMessage(m)
5741
}

src/main/scala/viper/server/core/VerificationWorker.scala

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,6 @@ class VerificationWorker(private val command: List[String],
102102
}
103103
}
104104

105-
override def mapEntityVerificationResult(entity: Entity, result: VerificationResult): VerificationResult = {
106-
backend.mapEntityVerificationResult(entity, result)
107-
}
108-
109105
override def call(): Unit = run()
110106
}
111107

@@ -253,11 +249,6 @@ class ViperBackend(val backendName: String, private val _frontend: SilFrontend,
253249
private def verification(input: Program): Either[Seq[AbstractError], VerificationResult] =
254250
Right(_frontend.verifier.verify(input))
255251

256-
def mapEntityVerificationResult(entity: Entity, verificationResult: VerificationResult): VerificationResult = {
257-
if (disablePlugins) verificationResult
258-
else _frontend.plugins.mapEntityVerificationResult(entity, verificationResult)
259-
}
260-
261252
private def mapVerificationResult(input: Program, result: VerificationResult): VerificationResult =
262253
if (disablePlugins) result
263254
else _frontend.plugins.mapVerificationResult(input, result)

0 commit comments

Comments
 (0)