Index: uspace/app/sbi/src/tdata.c
===================================================================
--- uspace/app/sbi/src/tdata.c	(revision 23de644e12ee218601dd193540374b779a6364d7)
+++ uspace/app/sbi/src/tdata.c	(revision d7e45c8be7315ef77eefc2b926977723f9feb2df)
@@ -31,4 +31,5 @@
 #include <stdlib.h>
 #include <assert.h>
+#include "list.h"
 #include "mytypes.h"
 #include "stree.h"
@@ -40,5 +41,4 @@
 static void tdata_tobject_print(tdata_object_t *tobject);
 static void tdata_tarray_print(tdata_array_t *tarray);
-static void tdata_tgeneric_print(tdata_generic_t *tgeneric);
 static void tdata_tfun_print(tdata_fun_t *tfun);
 
@@ -142,7 +142,4 @@
 		tdata_tarray_print(titem->u.tarray);
 		break;
-	case tic_tgeneric:
-		tdata_tgeneric_print(titem->u.tgeneric);
-		break;
 	case tic_tfun:
 		tdata_tfun_print(titem->u.tfun);
@@ -157,4 +154,6 @@
 {
 	switch (tprimitive->tpc) {
+	case tpc_bool: printf("bool"); break;
+	case tpc_char: printf("char"); break;
 	case tpc_int: printf("int"); break;
 	case tpc_nil: printf("nil"); break;
@@ -167,8 +166,18 @@
 {
 	stree_symbol_t *csi_sym;
+	list_node_t *arg_n;
+	tdata_item_t *arg;
 
 	csi_sym = csi_to_symbol(tobject->csi);
 	assert(csi_sym != NULL);
 	symbol_print_fqn(csi_sym);
+
+	arg_n = list_first(&tobject->targs);
+	while (arg_n != NULL) {
+		arg = list_node_data(arg_n, tdata_item_t *);
+		putchar('/');
+		tdata_item_print(arg);
+		arg_n = list_next(&tobject->targs, arg_n);
+	}
 }
 
@@ -185,10 +194,4 @@
 }
 
-static void tdata_tgeneric_print(tdata_generic_t *tgeneric)
-{
-	(void) tgeneric;
-	printf("unimplemented(generic)");
-}
-
 static void tdata_tfun_print(tdata_fun_t *tfun)
 {
