From f7d5492923cf49d258e7a62e0254e7e046d24752 Mon Sep 17 00:00:00 2001
From: Regis Blanc <regwblanc@gmail.com>
Date: Thu, 28 May 2015 17:35:57 +0200
Subject: [PATCH] re-introduce loop invariants positions

---
 src/main/scala/leon/purescala/FunctionClosure.scala       | 2 +-
 src/main/scala/leon/xlang/ImperativeCodeElimination.scala | 8 +++++---
 src/main/scala/leon/xlang/XLangAnalysisPhase.scala        | 2 +-
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/main/scala/leon/purescala/FunctionClosure.scala b/src/main/scala/leon/purescala/FunctionClosure.scala
index 63529f34a..61e6af5c5 100644
--- a/src/main/scala/leon/purescala/FunctionClosure.scala
+++ b/src/main/scala/leon/purescala/FunctionClosure.scala
@@ -78,7 +78,7 @@ object FunctionClosure extends TransformationPhase {
       val newPrecondition = simplifyLets(introduceLets(and((capturedConstraints ++ fd.precondition).toSeq :_*), fd2FreshFd))
       newFunDef.precondition = if(newPrecondition == BooleanLiteral(true)) None else Some(newPrecondition)
 
-      val freshPostcondition = fd.postcondition.map{ post => introduceLets(post, fd2FreshFd) }
+      val freshPostcondition = fd.postcondition.map{ post => introduceLets(post, fd2FreshFd).setPos(post) }
       newFunDef.postcondition = freshPostcondition
       
       pathConstraints = fd.precondition.getOrElse(BooleanLiteral(true)) :: pathConstraints
diff --git a/src/main/scala/leon/xlang/ImperativeCodeElimination.scala b/src/main/scala/leon/xlang/ImperativeCodeElimination.scala
index 7b340a12a..a4d8b18c2 100644
--- a/src/main/scala/leon/xlang/ImperativeCodeElimination.scala
+++ b/src/main/scala/leon/xlang/ImperativeCodeElimination.scala
@@ -181,9 +181,11 @@ object ImperativeCodeElimination extends LeonPhase[Program, (Program, Set[FunDef
           whileFunDef.precondition = invariantPrecondition
           whileFunDef.postcondition = trivialPostcondition.map(expr => 
               Lambda(Seq(ValDef(resVar.id)), and(expr, invariantPostcondition match { 
-                case Some(e) => e
-                case None => BooleanLiteral(true)
-              })))
+                  case Some(e) => e
+                  case None => BooleanLiteral(true)
+                }).setPos(wh)
+              ).setPos(wh)
+            )
 
           val finalVars = modifiedVars.map(_.freshen)
           val finalScope = (body: Expr) => {
diff --git a/src/main/scala/leon/xlang/XLangAnalysisPhase.scala b/src/main/scala/leon/xlang/XLangAnalysisPhase.scala
index f6d535767..28ff7349b 100644
--- a/src/main/scala/leon/xlang/XLangAnalysisPhase.scala
+++ b/src/main/scala/leon/xlang/XLangAnalysisPhase.scala
@@ -87,7 +87,7 @@ object XLangAnalysisPhase extends LeonPhase[Program, VerificationReport] {
                        case VCKinds.Precondition => VCXLangKinds.InvariantInd
                        case _ => vc.kind
                      },
-                     vc.tactic)
+                     vc.tactic).setPos(vc.getPos)
 
         nvc -> ovr
       } else {
-- 
GitLab