From 53078306a0bb028b1e66290ff34767b8e1fdfa11 Mon Sep 17 00:00:00 2001
From: jad <you@example.com>
Date: Mon, 2 May 2016 14:09:20 +0200
Subject: [PATCH] added pretty printing for termination checker

---
 src/main/scala/leon/termination/TerminationPhase.scala  | 2 +-
 src/main/scala/leon/termination/TerminationReport.scala | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/main/scala/leon/termination/TerminationPhase.scala b/src/main/scala/leon/termination/TerminationPhase.scala
index d5b07f276..a7802c490 100644
--- a/src/main/scala/leon/termination/TerminationPhase.scala
+++ b/src/main/scala/leon/termination/TerminationPhase.scala
@@ -30,6 +30,6 @@ object TerminationPhase extends SimpleLeonPhase[Program, TerminationReport] {
     }
     val endTime = System.currentTimeMillis
 
-    new TerminationReport(ctx, results, (endTime - startTime).toDouble / 1000.0d)
+    new TerminationReport(ctx, tc.program, results, (endTime - startTime).toDouble / 1000.0d)
   }
 }
diff --git a/src/main/scala/leon/termination/TerminationReport.scala b/src/main/scala/leon/termination/TerminationReport.scala
index c7fc3a0b3..47ef92268 100644
--- a/src/main/scala/leon/termination/TerminationReport.scala
+++ b/src/main/scala/leon/termination/TerminationReport.scala
@@ -6,8 +6,10 @@ package termination
 import purescala.Definitions._
 import utils.Report
 import utils.ASCIIHelpers._
+import leon.purescala.PrettyPrinter
+import leon.purescala.SelfPrettyPrinter
 
-case class TerminationReport(ctx: LeonContext, results : Seq[(FunDef,TerminationGuarantee)], time : Double) extends Report {
+case class TerminationReport(ctx: LeonContext, program: Program, results : Seq[(FunDef,TerminationGuarantee)], time : Double) extends Report {
 
   def summaryString : String = {
     var t = Table("Termination summary")
@@ -18,7 +20,10 @@ case class TerminationReport(ctx: LeonContext, results : Seq[(FunDef,Termination
         val result = if (g.isGuaranteed) "\u2713" else "\u2717"
         val verdict = g match {
           case LoopsGivenInputs(reason, args) =>
-            "Non-terminating for call: " + args.mkString(fd.id + "(", ",", ")")
+            val niceArgs = args.map { v =>
+              SelfPrettyPrinter.print(v, PrettyPrinter(v))(ctx, program)
+            }
+            "Non-terminating for call: " + niceArgs.mkString(fd.id + "(", ",", ")")
           case CallsNonTerminating(funDefs) =>
             "Calls non-terminating functions " + funDefs.map(_.id).mkString(",")
           case Terminates(reason) =>
-- 
GitLab