From 276000727125bc1fb3fd3c5032b0bdf7241da725 Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <ekneuss@gmail.com>
Date: Mon, 10 Dec 2012 18:10:35 +0100
Subject: [PATCH] Build Expr from tuples

---
 src/main/java/leon/codegen/runtime/Tuple.java     | 4 ++++
 src/main/scala/leon/codegen/CompilationUnit.scala | 8 ++++++++
 2 files changed, 12 insertions(+)

diff --git a/src/main/java/leon/codegen/runtime/Tuple.java b/src/main/java/leon/codegen/runtime/Tuple.java
index 112b4fe7a..93ed14032 100644
--- a/src/main/java/leon/codegen/runtime/Tuple.java
+++ b/src/main/java/leon/codegen/runtime/Tuple.java
@@ -20,4 +20,8 @@ public final class Tuple {
     }
     return this.elements[index];
   }
+
+  public final int getArity() {
+    return this.arity;
+  }
 }
diff --git a/src/main/scala/leon/codegen/CompilationUnit.scala b/src/main/scala/leon/codegen/CompilationUnit.scala
index b31c0f98b..35b3a59ee 100644
--- a/src/main/scala/leon/codegen/CompilationUnit.scala
+++ b/src/main/scala/leon/codegen/CompilationUnit.scala
@@ -53,6 +53,14 @@ class CompilationUnit(val program: Program, val classes: Map[Definition, ClassFi
         case _ =>
           throw CompilationException("Unsupported return value : " + e)
       }
+
+    case tpl: runtime.Tuple =>
+      val elems = for (i <- 0 until tpl.getArity) yield {
+        javaToGroundExpr(tpl.get(i))
+      }
+
+      Tuple(elems)
+
     case _ => 
       throw CompilationException("MEH Unsupported return value : " + e.getClass)
   }
-- 
GitLab