diff --git a/src/main/scala/leon/purescala/Constructors.scala b/src/main/scala/leon/purescala/Constructors.scala
index f0b2a975b1517b2f9fd31422d3e9a911f9489d98..a5ef87e1df891c4b77eeaa2515722e67b3985cb1 100644
--- a/src/main/scala/leon/purescala/Constructors.scala
+++ b/src/main/scala/leon/purescala/Constructors.scala
@@ -145,7 +145,7 @@ object Constructors {
 
     resType match {
       case Some(tpe) =>
-        casesFiltered.filter(c => isSubtypeOf(c.rhs.getType, tpe) || isSubtypeOf(tpe, c.rhs.getType))
+        casesFiltered.filter(c => typesCompatible(c.rhs.getType, tpe))
       case None =>
         casesFiltered
     }