From dc072e8d63b974698d956152427a5e5930c16e2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com> Date: Tue, 26 Jun 2012 19:05:25 +0200 Subject: [PATCH] integrate waypoint in evaluaiton and better printer for scala --- src/main/scala/leon/Evaluator.scala | 1 + .../scala/leon/purescala/ScalaPrinter.scala | 30 +++++++++++-------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/main/scala/leon/Evaluator.scala b/src/main/scala/leon/Evaluator.scala index c3e0ca1a6..d5c5745c1 100644 --- a/src/main/scala/leon/Evaluator.scala +++ b/src/main/scala/leon/Evaluator.scala @@ -77,6 +77,7 @@ object Evaluator { case _ => throw TypeErrorEx(TypeError(first, BooleanType)) } } + case Waypoint(_, arg) => rec(ctx, arg) case FunctionInvocation(fd, args) => { val evArgs = args.map(a => rec(ctx, a)) // build a context for the function... diff --git a/src/main/scala/leon/purescala/ScalaPrinter.scala b/src/main/scala/leon/purescala/ScalaPrinter.scala index 6018de2ca..501096c45 100644 --- a/src/main/scala/leon/purescala/ScalaPrinter.scala +++ b/src/main/scala/leon/purescala/ScalaPrinter.scala @@ -67,7 +67,7 @@ object ScalaPrinter { case Variable(id) => sb.append(id) case DeBruijnIndex(idx) => sys.error("Not Valid Scala") case Let(b,d,e) => { - sb.append("{\n") + sb.append("locally {\n") ind(sb, lvl+1) sb.append("val " + b + " = ") pp(d, sb, lvl+1) @@ -81,7 +81,7 @@ object ScalaPrinter { sb } case LetVar(b,d,e) => { - sb.append("{\n") + sb.append("locally {\n") ind(sb, lvl+1) sb.append("var " + b + " = ") pp(d, sb, lvl+1) @@ -496,11 +496,10 @@ object ScalaPrinter { case fd @ FunDef(id, rt, args, body, pre, post) => { var nsb = sb - for(a <- fd.annotations) { - ind(nsb, lvl) - nsb.append("@" + a + "\n") - } - + //for(a <- fd.annotations) { + // ind(nsb, lvl) + // nsb.append("@" + a + "\n") + //} ind(nsb, lvl) nsb.append("def ") @@ -523,7 +522,7 @@ object ScalaPrinter { nsb.append(") : ") nsb = pp(rt, nsb, lvl) - nsb.append(" = ") + nsb.append(" = (") if(body.isDefined) { pre match { case None => pp(body.get, nsb, lvl) @@ -542,11 +541,16 @@ object ScalaPrinter { } else nsb.append("[unknown function implementation]") - post.foreach(postc => { - nsb.append(" ensuring(res => ") //TODO, not very general solution... - nsb = pp(postc, nsb, lvl) - nsb.append(")") - }) + post match { + case None => { + nsb.append(")") + } + case Some(postc) => { + nsb.append(" ensuring(res => ") //TODO, not very general solution... + nsb = pp(postc, nsb, lvl) + nsb.append("))") + } + } nsb } -- GitLab