Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision dba6db9a6025d74a9abed179c7aefcec1d0d09ab)
+++ src/SynTree/Declaration.h	(revision bdd07556747632c6cfc8d469c9e4644b6593e9ad)
@@ -204,4 +204,5 @@
 
 	virtual std::string typeString() const;
+	virtual std::string genTypeString() const;
 
 	virtual TypeDecl *clone() const { return new TypeDecl( *this ); }
Index: src/SynTree/TypeDecl.cc
===================================================================
--- src/SynTree/TypeDecl.cc	(revision dba6db9a6025d74a9abed179c7aefcec1d0d09ab)
+++ src/SynTree/TypeDecl.cc	(revision bdd07556747632c6cfc8d469c9e4644b6593e9ad)
@@ -29,4 +29,9 @@
 }
 
+std::string TypeDecl::genTypeString() const {
+	static const std::string kindNames[] = { "otype", "dtype", "ftype", "ttype" };
+	return kindNames[ kind ];
+}
+
 std::ostream & operator<<( std::ostream & os, const TypeDecl::Data & data ) {
   return os << data.kind << ", " << data.isComplete;
