diff --git a/src/main/scala/leon/plugin/CodeExtraction.scala b/src/main/scala/leon/plugin/CodeExtraction.scala
index ae7d8c0e5c90f54afc179b5ee17fbf1ef885db1b..4649532adafd24739a9c8082036929c5906abf95 100644
--- a/src/main/scala/leon/plugin/CodeExtraction.scala
+++ b/src/main/scala/leon/plugin/CodeExtraction.scala
@@ -528,8 +528,8 @@ trait CodeExtraction extends Extractors {
         case Some(e3) => e3
         case None => nextExpr match {
           case ExTuple(tpes, exprs) => {
-            val tupleType = TupleType(tpes.map(tpe => scalaType2PureScala(unit, silent)(tpe)))
             val tupleExprs = exprs.map(e => rec(e))
+            val tupleType = TupleType(tupleExprs.map(expr => bestRealType(expr.getType)))
             Tuple(tupleExprs).setType(tupleType)
           }
           case ExTupleExtract(tuple, index) => {
diff --git a/testcases/regression/valid/MyTuple4.scala b/testcases/regression/valid/MyTuple4.scala
index 4b87272e23f7d9f2a3c33c29b5d455b88f234ddb..6fcfed661beca0487da4b02db71677e2dbaac60e 100644
--- a/testcases/regression/valid/MyTuple4.scala
+++ b/testcases/regression/valid/MyTuple4.scala
@@ -1,5 +1,5 @@
 
-object MyTuple1 {
+object MyTuple4 {
 
   abstract class A
   case class B(i: Int) extends A