diff --git a/src/main/java/leon/codegen/runtime/Tuple.java b/src/main/java/leon/codegen/runtime/Tuple.java index 112b4fe7a72b95369c71f5f36d1e93c51a57118c..93ed1403275bfb1c4962f65ea0c7b763fe015b6f 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 b31c0f98bb1f4abfea7b520239d54613d39199d7..35b3a59eef3e8696ca078314182014164f635b9b 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) }