From a05c87e571eff31bb341703319a6b4ffd93a6d93 Mon Sep 17 00:00:00 2001 From: Etienne Kneuss <ekneuss@gmail.com> Date: Tue, 26 May 2015 14:25:11 +0200 Subject: [PATCH] Fix info being too large in precondition. --- src/main/scala/leon/verification/DefaultTactic.scala | 2 +- .../scala/leon/verification/InductionTactic.scala | 2 +- src/main/scala/leon/verification/Tactic.scala | 12 ++++++++---- .../scala/leon/verification/VerificationReport.scala | 12 +----------- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/main/scala/leon/verification/DefaultTactic.scala b/src/main/scala/leon/verification/DefaultTactic.scala index a1cb99a49..3026068a1 100644 --- a/src/main/scala/leon/verification/DefaultTactic.scala +++ b/src/main/scala/leon/verification/DefaultTactic.scala @@ -33,7 +33,7 @@ class DefaultTactic(vctx: VerificationContext) extends Tactic(vctx) { case ((fi @ FunctionInvocation(tfd, args), pre), path) => val pre2 = replaceFromIDs((tfd.params.map(_.id) zip args).toMap, pre) val vc = implies(and(precOrTrue(fd), path), pre2) - val fiS = exprToShortString(fi) + val fiS = sizeLimit(fi.toString, 40) VC(vc, fd, VCKinds.Info(VCKinds.Precondition, s"call $fiS"), this).setPos(fi) } diff --git a/src/main/scala/leon/verification/InductionTactic.scala b/src/main/scala/leon/verification/InductionTactic.scala index 4fc868f9e..bc26e7796 100644 --- a/src/main/scala/leon/verification/InductionTactic.scala +++ b/src/main/scala/leon/verification/InductionTactic.scala @@ -78,7 +78,7 @@ class InductionTactic(vctx: VerificationContext) extends DefaultTactic(vctx) { val vc = implies(and(CaseClassInstanceOf(cct, arg.toVariable), precOrTrue(fd), path), implies(andJoin(subCases), replace((tfd.params.map(_.toVariable) zip args).toMap, pre))) // Crop the call to display it properly - val fiS = exprToShortString(fi) + val fiS = sizeLimit(fi.toString, 25) VC(vc, fd, VCKinds.Info(VCKinds.Precondition, "call $fiS, ind. on ($arg : ${cct.classDef.id)}"), this).setPos(fi) } diff --git a/src/main/scala/leon/verification/Tactic.scala b/src/main/scala/leon/verification/Tactic.scala index b424abf5f..b6cb76117 100644 --- a/src/main/scala/leon/verification/Tactic.scala +++ b/src/main/scala/leon/verification/Tactic.scala @@ -31,10 +31,14 @@ abstract class Tactic(vctx: VerificationContext) { CollectorWithPaths(f).traverse(expr) } - protected def exprToShortString(e: Expr) = { + protected def sizeLimit(s: String, limit: Int) = { + require(limit > 3) // Crop the call to display it properly - val eS = e.toString - val s = eS.takeWhile(_ != '\n').take(35) - if (s == eS) s else s ++ " ..." + val res = s.takeWhile(_ != '\n').take(limit) + if (res == s) { + res + } else { + res + " ..." + } } } diff --git a/src/main/scala/leon/verification/VerificationReport.scala b/src/main/scala/leon/verification/VerificationReport.scala index 495ab09f7..0667ed672 100644 --- a/src/main/scala/leon/verification/VerificationReport.scala +++ b/src/main/scala/leon/verification/VerificationReport.scala @@ -23,16 +23,6 @@ case class VerificationReport(val results: Map[VC, Option[VCResult]]) { lazy val totalInvalid: Int = vrs.count(_._2.isInvalid) lazy val totalUnknown: Int = vrs.count(_._2.isInconclusive) - def sizeLimit(str: String, limit: Int): String = { - require(limit > 3) - val res = str.takeWhile(_ != '\n').take(35) - if (res != str) { - res + "..." - } else { - str - } - } - def summaryString : String = if(totalConditions >= 0) { import utils.ASCIIHelpers._ @@ -42,7 +32,7 @@ case class VerificationReport(val results: Map[VC, Option[VCResult]]) { val timeStr = vr.timeMs.map(t => f"${t/1000d}%-3.3f").getOrElse("") Row(Seq( Cell(vc.fd.id.toString), - Cell(sizeLimit(vc.kind.name, 30)), + Cell(vc.kind.name), Cell(vc.getPos), Cell(vr.status), Cell(vr.solvedWith.map(_.name).getOrElse("")), -- GitLab