diff --git a/src/it/scala/inox/tip/TipPrintingSuite.scala b/src/it/scala/inox/tip/TipPrintingSuite.scala
index 8eb71ef04a918ed07d9045e4c2fa4f2d97911c6d..ccce4fe178ff12c188234c563d85872f7e457d37 100644
--- a/src/it/scala/inox/tip/TipPrintingSuite.scala
+++ b/src/it/scala/inox/tip/TipPrintingSuite.scala
@@ -10,8 +10,8 @@ class TipPrintingSuite extends FunSuite with ResourceUtils {
 
   val ctx = TestContext.empty
 
-  val files = resourceFiles("regression/tip/SAT", _.endsWith(".tip")).toList ++
-    resourceFiles("regression/tip/UNSAT", _.endsWith(".tip"))
+  val files = resourceFiles("regression/tip/SAT", _.endsWith(".tip")).toList.map("SAT" -> _) ++
+    resourceFiles("regression/tip/UNSAT", _.endsWith(".tip")).map("UNSAT" -> _)
 
   private def checkScript(syms: Symbols, expr: Expr): Unit = {
     for (fd <- syms.functions.values) {
@@ -21,14 +21,14 @@ class TipPrintingSuite extends FunSuite with ResourceUtils {
     assert(expr.getType(syms) != Untyped)
   }
 
-  for (file <- files) {
-    test(s"Parsing file ${file.getName}") {
+  for ((cat, file) <- files) {
+    test(s"Parsing file $cat/${file.getName}") {
       for ((syms, expr) <- new Parser(file).parseScript) {
         checkScript(syms, expr)
       }
     }
 
-    test(s"Re-printing file ${file.getName}") {
+    test(s"Re-printing file $cat/${file.getName}") {
       for ((syms, expr) <- new Parser(file).parseScript) {
         val program = InoxProgram(ctx, syms)
 
diff --git a/src/main/scala/inox/tip/Parser.scala b/src/main/scala/inox/tip/Parser.scala
index 422cedd2bf3e2d75f72e78d7158512ce21bcf474..bacfda92237e6949123253bfd0dc2adb90c04f75 100644
--- a/src/main/scala/inox/tip/Parser.scala
+++ b/src/main/scala/inox/tip/Parser.scala
@@ -272,7 +272,7 @@ class Parser(file: File) {
           )
         ).setPos(pred.optPos)
       } else {
-        extractTerm(pred)(locals.withVariable(s, vd.toVariable))
+        extractTerm(pred)(locals.withGenerics(syms zip root.typeArgs).withVariable(s, vd.toVariable))
       }
 
       val (optAdt, fd) = root.invariant(locals.symbols) match {