From a9f3fe621437b87467066225e9ed558cde755ff8 Mon Sep 17 00:00:00 2001
From: "Emmanouil (Manos) Koukoutos" <emmanouil.koukoutos@epfl.ch>
Date: Wed, 9 Apr 2014 13:19:56 +0200
Subject: [PATCH] Improve FunDef.duplicate. FunDef.copyContentFrom

---
 src/main/scala/leon/purescala/Definitions.scala   | 13 +++++++++----
 src/main/scala/leon/purescala/MethodLifting.scala |  6 +-----
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/main/scala/leon/purescala/Definitions.scala b/src/main/scala/leon/purescala/Definitions.scala
index 32f21b0e7..e3ad66bef 100644
--- a/src/main/scala/leon/purescala/Definitions.scala
+++ b/src/main/scala/leon/purescala/Definitions.scala
@@ -212,10 +212,15 @@ object Definitions {
 
     def duplicate: FunDef = {
       val fd = new FunDef(id, tparams, returnType, params)
-      fd.fullBody = fullBody
-      fd.parent = parent
-      fd.orig = orig
-      fd
+      fd.copyContentFrom(this)
+      fd.copiedFrom(this)
+    }
+    
+    def copyContentFrom(from : FunDef) {
+      this.fullBody       = from.fullBody
+      this.parent         = from.parent
+      this.orig           = from.orig
+      this.addAnnotation(from.annotations.toSeq : _*)
     }
 
     def hasBody                     = body.isDefined
diff --git a/src/main/scala/leon/purescala/MethodLifting.scala b/src/main/scala/leon/purescala/MethodLifting.scala
index d329b2949..a390c96f6 100644
--- a/src/main/scala/leon/purescala/MethodLifting.scala
+++ b/src/main/scala/leon/purescala/MethodLifting.scala
@@ -30,12 +30,8 @@ object MethodLifting extends TransformationPhase {
         val receiver = FreshIdentifier("$this").setType(recType).setPos(cd.id)
 
         val nfd = new FunDef(id, ctParams ++ fd.tparams, fd.returnType, ValDef(receiver, recType) +: fd.params)
-        nfd.postcondition = fd.postcondition
-        nfd.precondition  = fd.precondition
-        nfd.body          = fd.body
-
+        nfd.copyContentFrom(fd)
         nfd.setPos(fd)
-        nfd.addAnnotation(fd.annotations.toSeq : _*)
 
         mdToFds += fd -> nfd
       }
-- 
GitLab